聊天机器人:在LangChain中的实现

云的事情不好说 2024-05-25 05:04:46

假设有一堆文档,我们想要构建一个问答聊天机器人,它可以接收一个问题,并根据文档找到答案。

我们通过一个“嵌入模型(embedding model)”传递文档。使用 OpenAI 的嵌入 API 将文档或文档块转换为嵌入是很容易的。这些嵌入可以存储在向量数据库,如 Milvus、Chroma、Faiss 或 Lance 中。

用户通过一个“聊天界面(chat interface)”进行交互并输入问题/查询。这个查询也可以使用嵌入模型转换为嵌入。

接下来,我们可以使用相似性搜索找到最接近的块(类似于查询),然后将这些最接近的块(称为“上下文”)传递给像 ChatGPT 这样的大型语言模型。

最后,我们检索到答案,这个答案会通过聊天界面传递回给用户。

以下是各个步骤的解释:

私有知识库:包括Notion、PDF和其他文档等各种来源的信息。将这些信息分成较小的文本块。

嵌入模型:文本块通过嵌入模型处理,转换为向量。这些向量是文本块在高维空间中的数值表示。

索引:生成的向量被索引化,这一步将向量组织起来,以便于高效的搜索和检索。

向量索引:索引化的向量存储在向量索引中,方便快速访问这些向量。

查询嵌入:当用户通过聊天界面提交查询时,该查询也会通过嵌入模型处理,生成查询向量。

近似最近邻(ANN)搜索:使用查询向量在向量数据库中执行ANN搜索。这种搜索会识别出最接近查询向量的向量,即与知识库中最相关的文本块。

检索到的向量:从向量数据库中识别并提取出最接近的向量(检索到的向量)。

构建上下文:使用检索到的向量构建回答查询所需的上下文。

创建提示:使用上下文创建提示。然后将该提示发送给大型语言模型(LLM)以生成最终答案。

答案:LLM处理提示并生成答案,然后通过聊天界面返回给用户。

这种架构确保聊天机器人通过利用私有知识库和高级向量搜索技术提供准确且上下文相关的答案。



0 阅读:0

云的事情不好说

简介:感谢大家的关注