![](https://file.jishuzhan.net/article/1745042690677936130/2ed85db9ec40c75566aafc8417b50a71.webp)
基于InternLM和LangChain搭建知识库
![](https://file.jishuzhan.net/article/1745042690677936130/2acd79756f11e58b1affcb45cb883600.webp)
1 大模型开发范式
![](https://file.jishuzhan.net/article/1745042690677936130/e6a8723c6d3f5a0b6a7e5a2d200da844.webp)
LLM的局限性
![](https://file.jishuzhan.net/article/1745042690677936130/d2b96eacf21fb93b6b606f30a2d1ff71.webp)
- 知识受限:最新知识无法实时获取
- 专业能力有限:有广度无深度
- 定制化成本高:训练成本高
RAG VS Finetune
![](https://file.jishuzhan.net/article/1745042690677936130/70cde1690f279f4f7431c87e21de2a59.webp)
RAG:
- 无需重新训练
- 组织外挂加入知识
- 容易受基座模型的影响
- 问题+回答一起送入大模型,占据token长度
Finetune
- 个性化微调:风格,领域知识
- 知识面覆盖广:新的数据集及通用数据集按照比例混合
- 训练成本高
- 无法实时更新
RAG检索增强
![](https://file.jishuzhan.net/article/1745042690677936130/e42d9856cf70131c2031279bbc3cbce8.webp)
2 LangChain简介
![](https://file.jishuzhan.net/article/1745042690677936130/ec6d0e9fa66582f907c5038265d2aed7.webp)
- 开源
- 通用
- 核心模块:
- chains
- agent
基于LangChain搭建RAG应用
![](https://file.jishuzhan.net/article/1745042690677936130/69e13343f6f75d7c769f9290fb00a376.webp)
3 构建向量数据库
- 加载源文件
- 不同的文件有不同的加载方式
- 文档分块chunk
- 字符串长度分割
- 重叠区间
- 代码的话就是代码块 类等
- 文档向量化
- 文档embedding
- 存入向量数据库
4 搭建知识库助手
限制:
- 检索精度
- prompt性能
5 Web Demo部署
6 动手实战环节
![](https://file.jishuzhan.net/article/1745042690677936130/efd416e4a8c95ef0e429828e20b27d28.webp)
创建开发机
新建虚拟环境
安装相关依赖
![](https://file.jishuzhan.net/article/1745042690677936130/62937a401d71b4bebf22e414f0f5d7b9.webp)
下载模型文件
本机有,可以先复制
- internLM-7B
- modelscope
- huggfingace:sentence-transformer
- nltk
- punkt
- tagger
搭建自己知识库
- 克隆opencompass项目
- 构建向量数据库
- 导入数据md,txt文件
- 获取文件中的文本
- 对文本进行分块
- 词向量模型进行编码
- 加载数据到向量库Chroma
- 向量库保存到本地磁盘
将InternLM接入LangChain
![](https://file.jishuzhan.net/article/1745042690677936130/31e32b48175942dae1ed4a31c01148fe.webp)
构建检索问答链
![](https://file.jishuzhan.net/article/1745042690677936130/24fb5e4159f7fc0a9be97c4482ed4c6c.webp)
- 加载词向量模型
- 加载LLM模型
- 定义Prompt 模板
- 不懂的要回答说不知道,缓解幻觉问题
- 运行chain
![](https://file.jishuzhan.net/article/1745042690677936130/3c24e1ba4994e49bb02a20c139714f90.webp)
-
存储检索问答链的对象
-
实例化核心功能对象
-
gradio创建聊天机器人页面
执行代码
bash
python web_demo.py
![](https://file.jishuzhan.net/article/1745042690677936130/c4d4fce6b79a073150d38b4a363cdf33.webp)
自己部署,知识库为kkndme关于房价的
- 注意:demo要在本地打开,不然显示界面乱码;本地打开需要进行端口映射