对于每一个用户输入,首先将基于向量模型sentence transformer,将输入文本转化为向量,并在向量数据库中匹配相似的文本段,在这里我们认为与问题相似的文本段,大概率包含了问题的答案,然后会将用户的输入和检索到的相似文本段一起嵌入到模型的prompt中,传递给interlm,然后得到输出。
LangChain
基于langchain搭建RAG应用:首先对于本地的文档形式存在的个人知识库,会使用UnstructedLoader组件加载本地文档,该组件将不同格式的本地文档,统一成纯文本格式;然后通过textsplittler组件,对提取出来的纯文本进行分割成chunks;再通过开源词向量模型Sentence Transformer将文本段转换为向量格式,存储到基于Chroma的向量数据库中;对于用户的每一个输入query,会首先通过Sentence Transformer将输入转换为同维度的向量,通过在向量数据库中进行相似度的匹配,找到和用户输入相关的文本段,将相关的文本段嵌入到已经写好的prompt template中,再交给interLM进行回答。
构建向量数据库
搭建知识库助手
从检索方面的优化点:1)基于语义而不是基于字符长度进行chunk的切分,从而保证每一个chunk的语义完整性;2)…
从prompt的方面优化:不断优化从而不断激发模型的潜在能力