步骤3 :使用文档切割器 切割文本

步骤4:将切割后的每一小分成为chunk,成为切片

步骤5:使用嵌入式模型 将 chunk 向量化(这些向量可能有几千个维度,每一个都是一个浮点数)

步骤6:将向量化的切片,存储到vectorstor中。(相当与一个数据库,只不过都是一些向量)

在此有一个疑问:为什么要对 切片 进行向量化?

        先看步骤8:将用户的问题向量化, 步骤9:在vector中寻找最相似的向量。

        从中我进行了猜想:向量化是为每一个切片中的内容贴上 详细的标签。

        方便机器根据用户的问题 寻找对应的知识。

步骤7,10:根据问题从 被向量化的数据库中 寻找匹配度高的知识 (这一步体现了“检索”二字)

步骤11, 12,13:通过提示词工程加工数据中的知识 得到提示词 (对应“增强”)

步骤14,15:生成回答

这是一个相似的图:

强调一些技术难点:

1文件解析:文件解析时,我们可能会处理图片,表格(需要从中提取文字)

2文件切割:有多种切割方式,应该选用哪种呢,它影响为数据贴标签的结果:

        比如按字数切割(每200字切割),

        按token切割,

        按语义切割(初中学文章时,老师叫我们划分段落:开头 铺垫 高潮 结尾。)

        按字符切割(\n 如果出现换行字符我们就切割)

6知识检索:检索的方式也有很多种,到底要用那种:

        基于相似度进行检索

        最大边际相关性的检索

7知识重排序:我们检索得出了很多的知识,我们呢需要从中挑选出相似度最高的一部分。

        重排序(Reranker):适合回答 专业性问题(高精度,高相关性):客服系统,专业知识库

        它会是反应时间边长

需要使用嵌入式模型

需要使用重排序模型

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐