【项目实训】Langchain-Chatchat知识库接口文档

base_url = 'http://127.0.0.1:7861'
headers = {'Content-Type': 'application/json'}
response = requests.get(urljoin(base_url, api))
response = requests.post(urljoin(base_url, api), json=data, headers=headers)

创建知识库

  • URL:/knowledge_base/create_knowledge_base
  • 请求方式:post
  • 源码地址:server/knowledge_base/kb_api.py/create_kb
  • 请求参数:
{ 
        "knowledge_base_name": "待创建知识库",
        "vector_store_type": "faiss", 
        "embed_model": "bge-large-zh"
}

删除知识库

  • URL:/knowledge_base/delete_knowledge_base
  • 请求方式:post
  • 源码地址:server/knowledge_base/kb_api.py/delete_kb
  • 请求参数:{"knowledge_base_name": "待删除知识库"}

更新知识库介绍

  • /knowledge_base/update_info
  • POST
  • 参数:
{
  "knowledge_base_name": "samples",
  "kb_info": "这是一个知识库"
}
  • 源码地址:server/knowledge_base/kb_doc_api.py/update_info

获取知识库列表

  • URL:/knowledge_base/list_knowledge_bases
  • 请求方式:get
  • 源码地址:server/knowledge_base/kb_api.py/list_kbs

更新现有文件到知识库

  • /knowledge_base/update_docs
  • POST
{
    "knowledge_base_name": "xiaomi",
    "file_names": ["/home/admin/workspace/data/美团北斗计划14条.csv"],
    "chunk_size": 250,
    "chunk_overlap": 50,
    "zh_title_enhance": True,
    "not_refresh_vs_cache": False
}
  • 源码地址:server/knowledge_base/kb_doc_api.py/update_docs

获取知识库内的文件列表

  • URL:/knowledge_base/list_files?knowledge_base_name=目标知识库
  • 请求方式:get
  • 源码地址:server/knowledge_base/kb_doc_api.py/list_files

删除知识库内指定文件

  • /knowledge_base/delete_docs
  • POST
{
  "knowledge_base_name": "samples",
  "file_names": [
    "file_name.md",
    "test.txt"
  ],
  "delete_content": false,
  "not_refresh_vs_cache": false
}

根据content中文档重建向量库,流式输出处理进度。

  • /knowledge_base/recreate_vector_store
  • POST

上传文件到临时目录,用于文件对话。

  • /knowledge_base/upload_temp_docs
  • POST

知识库对话

搜索知识库

  • URL:/knowledge_base/search_docs
  • 请求方式:post
  • 源码地址:server/knowledge_base/kb_doc_api.py/search_docs
  • 请求参数:
    query不为空:借助langchain的similarity_search_with_score
{
  "query": "你好",
  "knowledge_base_name": "samples",
  "top_k": 3, #匹配向量数
  "score_threshold": 1, #知识库匹配相关度阈值,取值范围在0-1之间,SCORE越小,相关度越高,取到1相当于不筛选,建议设置在0.5左右
  "file_name": "",
  "metadata": {}
}

query为空:通过file_name或metadata检索Document

file_name: str = Body("", description="文件名称,支持 sql 通配符"),
metadata: dict = Body({}, description="根据 metadata 进行过滤,仅支持一级键"),
  • 返回:DocumentWithVSId的实例列表
[
  {
    "page_content": "string",
    "metadata": {},
    "type": "Document",
    "id": "string",
    "score": 3
  },
]
  • knowledge_base_chat调用此接口

与知识库对话

  • URL:/chat/knowledge_base_chat
  • 请求方式:post
  • 源码地址:server/chat/knowledge_base_chat.py
{
  "query": "你好",
  "knowledge_base_name": "samples",
  "top_k": 3,
  "score_threshold": 1,
  "history": [
    {
      "role": "user",
      "content": "我们来玩成语接龙,我先来,生龙活虎"
    },
    {
      "role": "assistant",
      "content": "虎头虎脑"
    }
  ],
  "stream": false,
  "model_name": "chatglm3-6b",
  "temperature": 0.7,
  "max_tokens": 0,
  "prompt_name": "default"
}
  • server/agent/tools/search_knowledgebase_complex调用此接口,并作为agent_chat接口的工具之一

可能不会用到的接口

上传文件到知识库,并/或进行向量化

  • /knowledge_base/upload_docs
  • POST
  • 源码地址:server/knowledge_base/kb_doc_api.py/upload_docs

直接更新知识库文档

  • URL:/knowledge_base/update_docs_by_id
  • POST
  • 源码地址:server/knowledge_base/kb_doc_api.py/update_docs_by_id

下载对应的知识文件

  • /knowledge_base/download_doc/?
  • GET

根据content中文档重建向量库,流式输出处理进度。

  • /knowledge_base/recreate_vector_store
  • POST

上传文件到临时目录,用于文件对话。

  • /knowledge_base/upload_temp_docs
  • POST
### Langchain-Chatchat 知识库接口 `knowledge_base_chat` 的使用指南 #### 接口概述 `knowledge_base_chat` 是 Langchain-Chatchat 提供的一个核心功能模块,用于实现基于本地知识库的问答交互。该接口通过加载已有的知识库文件并结合语言模型完成对用户提问的回答。其主要依赖于 Langchain 和 Ollama 技术栈,并支持多种配置选项。 #### 配置准备 在使用 `knowledge_base_chat` 前,需确保已完成以下准备工作: 1. 安装必要的依赖项,包括但不限于 Python、Langchain 及 Ollama。 2. 初始化知识库路径及相关设置文件(如 `basic_settings.yaml` 和 `kb_settings.yaml`),这些文件可采用默认配置[^1],或者根据需求自定义调整[^2]。 3. 执行命令以初始化知识库: ```bash chatchat kb -r ``` #### 使用方法 以下是关于如何调用 `knowledge_base_chat` 接口的具体说明: ##### 1. 加载知识库 在启动应用之前,需要加载已经构建好的知识库数据。这一步通常由框架自动处理,但如果手动操作,则可以通过如下方式实现: ```python from langchain_chatchat import KnowledgeBaseManager # 创建知识库管理器实例 manager = KnowledgeBaseManager() # 载入知识库 manager.load_knowledge_base() ``` ##### 2. 发起对话请求 发起一次基于知识库的对话请求时,可通过传递查询字符串来获取响应结果。具体代码示例如下: ```python response = manager.knowledge_base_chat(query="什么是量子计算?") print(response) ``` 此函数内部会执行一系列逻辑流程,其中包括将用户的输入存储到数据库中以便后续分析或检索[^3]。 ##### 3. 自定义参数 除了基本的功能外,还可以传入额外的参数来自定义行为模式。例如指定某个特定的知识领域范围或是更改返回内容的形式等。 --- ### 示例程序 下面提供了一个完整的例子展示如何利用 `knowledge_base_chat` 实现简单的问答系统: ```python from langchain_chatchat import KnowledgeBaseManager def main(): # 初始化知识库管理者对象 manager = KnowledgeBaseManager() try: # 尝试加载现有的知识库资源 manager.load_knowledge_base() while True: user_input = input("请输入您的问题 (退出请按 'q'): ") if user_input.lower() == 'q': break answer = manager.knowledge_base_chat(user_input) print(f"答案: {answer}") except Exception as e: print(f"发生错误: {e}") if __name__ == "__main__": main() ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值