RAG (Retrieval-Augmented Generation,检索增强生成)的核心思想是让大语言模型在生成回答或文本时能够动态地从外部知识库中检索相关信息。这种方法能够提高模型生成内容的准确性、可靠性和透明度,同时减少“幻觉”。
本文主要介绍 RAG 场景开发的 4 个步骤:意图分析、知识检索、重排序和知识问答。
场景创建完成后是待启动状态,需要启动场景,待场景为运行中状态时可以进行场景开发。
说明
意图分析默认为关闭状态,关闭状态下将使用系统默认配置,开启可进行自定义配置。
通过大语言模型的能力对问题进行意图的分析,通过 “意图输出格式”、“指令调优”、“Few-shot 规则”,获取到问题中的关键特征。
配置项 | 说明 |
---|---|
推理服务 | 选择已经创建完成的大语言模型推理服务,如果需要新的推理服务,可参考创建推理服务。 |
模型 | 选择推理服务下关联的大语言模型。 |
API Key | 选择已经创建的 API Key,如果需要新的 API Key,可参见创建 API Key。 |
意图输出格式 | 通过设置关键词的提取思路,引导大模型精准检索外部知识库中的目标关键词。
|
指令调优 | 通过设置调优规则来指导大模型抽取出正确的关键词,在运行时,会先判断指令调优关键词是否被命中(关键词是否在问题中出现),如果命中则会按照“指令要求”的内容对意图输出格式进行调优。
|
Few-shot 规则 | 通过提供少量标注示例,引导大模型在有限数据下实现意图泛化、检索策略优化及生成内容结构化。 |
意图分析效果测试
在页面右侧输入 Query 可以进行效果测试。效果测试会展示意图分析的结果,以及命中的调优规则和 Few-shot 规则。
例如意图分析的调优规则为:
那么效果测试的展示内容如下:
说明
知识检索默认为关闭状态,开启可进行自定义配置。
针对意图分析中获取到问题的关键词,支持通过 DSL 配置为这些关键词设置检索规则,同时还支持通过设置不同的权重,调整关键词在召回阶段的分数。
配置项 | 说明 |
---|---|
DSL 算子 | 支持 TERMS、KNN、MATCH、INTERVALS、CUSTOM、RANGE 算子类型。 |
匹配类型 | 支持 MUST、SHOULD、MUST NOT 三种类型。 |
索引字段 | 选择需要应用的索引字段,支持多选。 说明 快速配置的索引内置两个字段,分别为 content 和 content_knn。
|
参数配置 | 根据 DSL 算子的不同,参数配置也不同:
|
查询条件 |
|
内置函数说明
函数 | 说明 |
---|---|
any2str | 将任意的内容转成 str,如果输入是 list 则以空格拼接,其他场景兜底使用 str(value)。 |
any2vec | 将任意的内容转成 vector(基于 Embedding 服务),如果输入不是 str 则先使用 any2str 转换成 str,之后再转成 vector(对于处理异常,最好跳过 knn)。 |
any2list | 将任意的内容转成 list,如果输入不是 list 则先调用 any2str 转成 str,然后返回 [str]。 |
range_money | 意图结果的金额规范化。
|
range_date | 意图结果的日期规范化。
|
any2number | 将给定的值转换为数字(包括整数、小数、分数等各类数字)。
|
召回数量
设置知识检索阶段返回的文档数量。
说明
建议召回数量调大一些,这样可以获取到更多的召回数据,方便后续进行重排序和知识问答。
知识检索效果测试
在页面右侧输入 Query 可以进行效果测试。效果测试会展示召回结果和 DSL 语句。
说明
重排序默认为关闭状态,开启可进行自定义配置。
将知识检索阶段的召回结果输入到重排序模型,进行语义级重排序,输出得分最高的 Top_N 的文档。
配置项 | 说明 |
---|---|
推理服务 | 选择已经创建完成的重排模型推理服务,如果需要新的推理服务,可参考创建推理服务。 |
模型 | 选择推理服务下关联的重排序模型。 |
返回数量 | 设置重排序后保留的文档数量。 |
查询模版 | Rerank 模型在 rerank 操作时接受的 query 参数,配置查询模版后,可以在 rerank 操作前根据模版渲染出 query 信息(可以使用 {{intention.xxx}} 引用意图分析的输出内容,也可以用 {{query}} 直接引用原始问题,支持 mustache 语法)。可选配置,如未配置则默认使用问题本身作为 query。 |
文档模版 | Rerank 模型在 rerank 操作时接受的 document list 参数,配置文档模版后,可以在 rerank 操作前根据模版渲染出 document list 信息(可以使用 {{document.xxx}} 引用知识检索阶段获取到的 document 信息,可以使用 {{intention.xxx}} 引用意图分析的输出内容,也可以用 {{query}} 直接引用原始问题,支持 mustache 语法)。可选配置,如未配置则默认使用知识检索阶段输出的 document json 序列化结果作为 rerank 的 document list 参数。 |
重排序效果测试
在页面右侧输入 Query 可以进行效果测试。效果测试会展示重排序后的结果。
在知识问答环节,经过重排序模块筛选的相关文档和用户问题作为输入数据,被输送至大语言模型。大语言模型基于此对输入数据进行语义分析,将检索文档的知识与用户问题的语义信息相融合,构建符合自然语言逻辑的文本,输出高质量、有针对性的结果,从而有效解答用户的问题。
配置项 | 说明 |
---|---|
推理服务 | 选择已经创建完成的大语言模型推理服务,如果需要新的推理服务,可参考创建推理服务。 |
模型 | 选择推理服务下关联的大语言模型。 |
API Key | 选择已经创建的 API Key,如果需要新的 API Key,可参见创建 API Key。 |
Prompt | 系统提供了默认 prompt,也可以根据实际对话需要,给出更加具体的回答要求。 |
拼接邻近文本片数量 | 为召回重排后的结果拼接邻近文本片,合理设置拼接相邻文本片的数量,既能保证信息的完整性,又能提升语义的连贯性。这样能够让模型获取更丰富的信息,进而生成更连贯、高质量的文本。 |
多轮对话 | 基于历史对话对本轮问题进行改写,使其具备更完整的语义信息,检索更准确。 注意 多轮对话会增加检索时长和额外的 Tokens 消耗。 |
知识问答效果测试
场景开发配置完成,点击左上角进行保存。