赞
踩
视频地址:
(3)基于 InternLM 和 LangChain 搭建你的知识库
文档教程:
https://github.com/InternLM/tutorial/tree/main/langchain
Retrieval-Augmented Generation (RAG) 检索增强生成
核心思想:给大模型外挂一个知识库,对用户的提问会首先从知识库中匹配到提问对应相关的文档,然后将文档和提问一起交给大模型来生成回答,从而提高大模型的知识储备
优势:
不足:
在一个新的较小的训练集上,进行轻量级的训练微调,从而提升模型在这个新数据集上的能力
优势:
不足:
如何快速高效的开发RAG应用?
开发者可以直接将私域数据嵌入LangChain中的组件,通过将这些组件进行组合,生成适合来构建适用于自己业务场景的RAG应用
对于以本地文档Local Documents
形式存在的个人知识库,会使用Unstructed Loader
组建来加载本地文档,这个组件会将不同格式的本地文档统一转换为纯文本格式;然后使用Text Splitter
对提取出来的纯文本进行分割成Chunk,再通过开源词向量模型Sentence Transformer
将文本段转换为向量格式,存储到基于Chroma
的向量数据库VectorDB
中。
接下来,对于用户的每一个输入Query
,会首先通过Sentence Transformer
,将输入转换为同样纬度的向量,通过在向量数据库中进行相似度匹配Vector Similarity
找到和用户输入相关的文本段Related Text Chunks
,将相关的文本段嵌入到已经写好的Prompt Template
中,再交给InternLM
进行最后的回答即可。
上述的一整个过程都被封装在检索问答链中,我们可以将个性化的配置引入到检索问答链对象,即可构建属于自己的RAG应用
RAG开发基本流程:
个人数据类型(txt, markdown, pdf)转化为无格式的字符串,后续构建向量数据库的输入都是基于无格式的文本
对加载的文本进行切分,将它划分到多个不同的Chunks
,后续检索相关的Chunk
来实现问答。(例如:设定最长的字符串长度为500,那么每500个字符会被切分为一个Chunk
)
后续实战环节会使用开源词向量Sentence Transformer
来进行向量化。
在完成向量数据库的构建后,就可搭建知识库助手
上述方法可以高效使用LangChain的检索问答链组件
调用检索问答链会自动完成对用户输入进行向量化,在向量数据库中检索相关文档片段,基于internLM
的自定义大模型进行检索回答的全部过程。调用这样一个检索问答链就可以实现知识库助手的核心过程。
见文档:
https://github.com/InternLM/tutorial/tree/main/langchain
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。