下面是一个简单的基于RAG的聊天机器人的例子,用于查询您的私人知识库。

第一步是以适合查询的格式存储内部文档的知识。我们通过使用嵌入模型嵌入它来做到这一点:

𝟭: 将整个知识库的文本语料库分割成块——块将表示可查询的单个上下文。感兴趣的数据可以来自多个来源,例如由PDF报告补充的Confluence中的文档。
𝟮: 使用嵌入模型将每个块转换为矢量嵌入。
𝟯: 将所有矢量嵌入存储在矢量数据库中。
𝟰: 将分别表示每个嵌入的文本与指向嵌入的指针一起保存(我们稍后需要)。

接下来,我们可以开始构建感兴趣的问题/查询的答案:

𝟱: 使用用于嵌入知识库本身的嵌入模型嵌入您要问的问题/查询。
𝟲: 使用生成的矢量嵌入对矢量数据库中的索引运行查询。选择要从矢量数据库中检索的矢量数量——这将等于您将要检索并最终用于回答查询问题的上下文数量。
𝟳: 向量DB针对索引对所提供的向量嵌入执行近似最近邻(ANN)搜索,并返回先前选择的上下文向量量。该过程返回在给定嵌入/潜在空间中最相似的向量。
𝟴: 将返回的矢量嵌入映射到表示它们的文本块。
𝟵: 通过提示将问题和检索到的上下文文本块一起传递给LLM。指示LLM仅使用提供的上下文来回答给定的问题。这并不意味着不需要即时工程——您需要确保LLM返回的答案符合预期的界限,例如,如果检索到的上下文中没有可以使用的数据,请确保没有提供虚构的答案。

为了让它成为一个真正的聊天机器人,使用一个Web UI来面对整个应用程序,该UI公开了一个文本输入框作为聊天界面。在通过步骤1。至9.-返回并显示生成的答案。这就是当今大多数基于单个或多个内部知识库来源的聊天机器人的实际构建方式。

如上所述,该系统实际上只是一个幼稚的RAG,通常不适合生产级应用。您需要了解系统中的所有移动部件,以便通过应用先进技术来调整它们,从而将Naive RAG转换为适合生产的advanced RAG。

什么是RAG系统?_首席架构师

什么是RAG系统?_首席架构师_02