跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 LangChain 实现的知识库问答工具

知识库问答(KBQA)工具允许用户通过自然语言提问并从结构化知识库中检索答案。介绍基于 LangChain 框架实现的开源项目 Langchain-Chatchat,支持本地部署大语言模型与向量数据库构建私有知识库。核心功能包括自然语言查询理解、知识库检索及答案生成。实施步骤涵盖环境准备、模型下载、参数配置、知识库初始化及服务启动。该方案适用于客户服务、企业内部信息查询等场景,利用 RAG 技术提升信息检索效率。

岁月神偷发布于 2025/2/7更新于 2026/6/124 浏览
基于 LangChain 实现的知识库问答工具

知识库问答工具

知识库问答(Knowledge Base Question Answering, KBQA)工具是一种自然语言处理技术,它允许用户通过自然语言提问,并从结构化的知识库中找到答案。 这种工具通常包括一个预先构建的知识库,其中包含大量的实体、属性和它们之间的关系,以及一个能够理解用户提问并从知识库中检索答案的问答系统。

核心功能

  1. 理解自然语言查询:系统需要解析用户的查询,理解其意图和所涉及的关键词。
  2. 知识库检索:系统在知识库中搜索相关信息,通常使用结构化查询语言(如 SPARQL)在图数据库中检索。
  3. 答案生成:系统从检索到的信息中提取答案,并以自然语言的形式呈现给用户。

知识库问答工具广泛应用于客户服务、企业内部信息查询、在线教育等多个领域,它可以提供快速、准确的回答,提高信息检索效率,减轻人工客服的压力。

LangChain 概述

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。 它使得应用程序能够具有上下文感知能力和推理能力。

主要组件

  • LangChain 库:Python 和 JavaScript 库。包含了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。
  • LangChain 模板:一系列易于部署的参考架构,用于各种任务。
  • LangServe:一个用于将 LangChain 链部署为 REST API 的库。
  • LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成。

特点

  1. 模型集成:支持多种语言模型,包括大型模型如 GPT-3,以及自定义模型。
  2. 工具连接:可以连接到各种工具和 API,使得模型能够利用外部资源来增强其回答的准确性和实用性。
  3. 记忆功能:允许应用程序存储和检索对话历史,从而在对话中保持上下文连续性。
  4. 模块化设计:设计是模块化的,使得开发者可以根据需要轻松地添加或替换组件。
  5. 多语言支持:支持多种编程语言,使得开发者可以使用他们熟悉的语言来构建应用程序。

实施步骤

1. 下载代码仓库准备基础环境

git clone https://github.com/chatchat-space/Langchain-Chatchat.git
cd Langchain-Chatchat
pip install -r requirements.txt
pip install -r requirements_api.txt
pip install -r requirements_webui.txt

默认依赖包括基本运行环境(FAISS 向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。

2. 下载模型文件

git lfs install
git-lfs clone https://huggingface.co/THUDM/chatglm2-6b
git-lfs clone https://huggingface.co/shibing624/text2vec-base-chinese

3. 初始化参数配置

复制配置文件:

python copy_config_example.py

该脚本将会将所有 config 目录下的配置文件样例复制一份到 config 目录下,方便开发者进行配置。接着,开发者可以根据自己的需求,对配置文件进行修改。

  • 基础配置项 basic_config.py:负责记录日志的格式和储存路径,通常不需要修改。
  • 模型配置项 model_config.py:
    • MODEL_ROOT_PATH:本地模型路径配置。建议将所有下载的模型放到一个统一的目录下,然后将 MODEL_ROOT_PATH 指定为该目录。
    • EMBEDDING_MODEL:文本向量化对应的模型名称,与 MODEL_PATH 里面的 embed_model 里面的 key 对应,key 对应的 value 与 MODEL_ROOT_PATH 地址拼接形成完整的模型地址。
    • LLM_MODELS:大语言模型的名称,与 MODEL_PATH 里面的 llm_model 里面的 key 对应,key 对应的 value 与 MODEL_ROOT_PATH 地址拼接形成完整的模型地址。
    • ONLINE_LLM_MODEL:在线模型 API 配置。在 ONLINE_LLM_MODEL 已经预先写好了所有支持的在线 API 服务,通常只需要把申请的 API_KEY 等填入即可。
    • HISTORY_LEN:历史对话轮数通常不建议设置超过 10,因为这可能导致显存占用过高、速度处理慢。
    • TEMPERATURE:通常不建议设置过高。在 Agent 对话模式和知识库问答中,我们强烈建议将其设置成 0 或者接近于 0。TEMPERATURE 越高,生成内容的随机性越强。
    • Agent_MODEL:支持用户使用'模型接力赛'的用法,即选择的大模型仅能调用工具,但是在工具中表现较差,则这个工具作为'模型调用工具'。如果用户设置了 Agent_MODEL,则在 Agent 中,使用 Agent_MODEL 来执行任务,否则,使用 LLM_MODEL。
  • 知识库配置项 kb_config.py:配置与知识库相关的参数,包括知识库的名称,使用的向量数据库类型,文本拆分策略,采用哪种分词器等。
  • 提示词配置项 prompt_config.py:
    • llm_chat:基础的对话提示词,通常来说,直接是用户输入的内容,没有系统提示词。
    • knowledge_base_chat:与知识库对话的提示词,在模板中,我们为开发者设计了一个系统提示词,开发者可以自行更改。
    • agent_chat:与 Agent 对话的提示词,同样,我们为开发者设计了一个系统提示词,开发者可以自行更改。

prompt 模板使用 Jinja2 语法,简单点就是用双大括号代替 f-string 的单大括号。请注意,本配置文件支持热加载,修改 prompt 模板后无需重启服务。

  • 服务配置项 server_config.py:配置服务绑定的 IP 和端口,以及相应超时时间等参数。

4. 初始化知识库

python init_database.py --recreate-vs

5. 加载 LoRA 微调后的 baichuan 模型

根据实际需求加载相应的微调模型配置。

6. 启动服务

完成上述配置后,即可启动服务进行使用。

目录

  1. 知识库问答工具
  2. 核心功能
  3. LangChain 概述
  4. 主要组件
  5. 特点
  6. 实施步骤
  7. 1. 下载代码仓库准备基础环境
  8. 2. 下载模型文件
  9. 3. 初始化参数配置
  10. 4. 初始化知识库
  11. 5. 加载 LoRA 微调后的 baichuan 模型
  12. 6. 启动服务
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 金九银十 Android 面试高频真题集:Java、框架与音视频详解
  • 延凡 AI 工业视觉分析平台:制造业质检与效率优化方案
  • VSCode Java 环境配置:解决 JDK 版本不一致问题
  • C++ 类完全指南:从基础定义到访问控制
  • Java JVM 核心原理与性能调优实战指南
  • SpringBoot 集成 KingbaseES 数据库实践指南
  • 深度剖析 Rokid SLAM 算法:从传感器融合到空间重建
  • Rokid SLAM 算法深度剖析:从传感器融合到空间重建
  • 深度剖析 Rokid SLAM 算法:从传感器融合到空间重建的完整技术链路
  • Linux 创建用户并配置 Sudo 权限
  • FPGA Aurora 64B/66B 高速串行通信开发指南
  • Stable Diffusion WebUI 本地部署指南(含 CUDA、cuDNN、PyTorch 安装)
  • Ubuntu 24.04 安装 JDK 21 三种常用方法
  • TRAE Skills 全解析:从概念到实践
  • 前端组件库:拒绝重复造轮子
  • CentOS 7 部署 Docker、PostgreSQL 与 Redis 实战指南
  • 深度剖析 Rokid SLAM 算法:从传感器融合到空间重建的技术链路
  • 大语言模型 LoRA 微调实战指南
  • Whisper 多语言识别数据标注与自定义数据集训练指南
  • C++ 模板初阶:泛型编程基础

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online