【Java SpringAI智能体开发学习 | 4-3】RAG知识库进阶:文档过滤和检索, 查询增强和关联

#AI的出现,是否能替代IT从业者?#

文档过滤和检索

在 Spring AI 的向量存储(VectorStore)中,文档过滤检索是构建 RAG(检索增强生成)等应用的核心流程,它们结合向量相似度和元数据筛选,实现精准的文档查找。

SpringAI将文档过滤和检索分为了三个阶段,分别为预检索、检索中、检索后。每一个阶段都提供了自定义组件来更好地增强检索,提高准确性。

预检索

负责优化用户输入的查询语句,使描述问题更清晰,更有针对性,提高后续检索的质量。

核心任务

  • 对用户查询文本进行清洗、分词或扩展(如同义词替换)
  • 基于业务规则过滤掉明显不相关的文档集合
  • 动态生成或调整检索过滤条件(Filter.Expression

RewriteQueryTransformer:对用户的查询进行改写,当用户查询含糊不清或者包含无意义的信息时,会使其更加清洗明确。

由源码可以看出,实际上就是将这个语句和用户查询的语句拼接在一起,同时用了动态参数。

QueryTransformer:用于转换用户原始查询,例如:

public class CustomQueryTransformer implements QueryTransformer {
    @Override
    public String transform(String query) {
        // 示例:将英文缩写替换为全称
        return query.replace("AI", "人工智能");
    }
}

  • 对查询进行拼写纠错
  • 扩展查询关键词(如将 “AI” 扩展为 “人工智能”)
  • 提取查询中的实体作为过滤条件(如从 “北京的天气” 中提取 “location: 北京” 作为过滤条件)

此外还有很多组件,需要我们耐心探索

检索中

目标:在向量数据库执行检索时,优化相似度计算和结果筛选逻辑,查询出最相关的文档。

核心任务

  • 调整相似度度量方式(如从余弦相似度切换为点积)
  • 动态设置检索参数(如 topKsimilarityThreshold
  • 结合向量相似度和元数据过滤进行混合检索

DocumentRetriever:是负责从向量存储(或其他数据源)中检索与查询相关的文档的核心组件。支持元数据过滤、设置相似度阈值、设置返回的结果数。

ConcatenationDocumentJoiner:是一个用于将多个文档内容合并为单一字符串的组件,当检索到多个相关文档后,需要将它们的内容合并成一个连贯的上下文,再传递给大语言模型(LLM)生成回答。

检索后

目标:对检索返回的结果进行二次处理,提升最终结果的相关性和可用性。

核心任务

  • 重排序检索结果(如基于业务权重调整顺序)
  • 过滤低质量或重复文档
  • 对文档内容进行摘要或格式化

查询增强和关联

在 Spring AI 及 RAG(检索增强生成)场景中,查询增强(Query Enhancement) 和关联(Correlation) 是提升检索准确性和生成质量的重要技术,旨在解决原始查询表达不清晰、上下文缺失或与文档匹配度低等问题。

是RAG流程的最终环节,负责将检索的文档与用户查询结合起来,为AI提供必要的上下文。

QuestionAnswerAdvisor

当用户问题发给AI模型时,Advisor会查询向量数据库搜索与用户问题相关的文档作为上下文,附加到用户查询中

ChatResponse response = ChatClient.builder(chatModel)
        .build().prompt()
        .advisors(new QuestionAnswerAdvisor(vectorStore))
        .user(userText)
        .call()
        .chatResponse();

实现原理就是将上下文和用户查询拼接为一个新的Prompt。

RetrievalAugmentationAdvisor

RetrievalAugmentationAdvisor(检索增强顾问)是一个专注于优化 RAG(检索增强生成)核心链路的组件。它的核心职责是通过动态调整 “检索 - 增强 - 生成” 全流程中的关键环节,解决检索与生成脱节、上下文相关性不足、LLM 幻觉等问题,最终提升回答的准确性、相关性和可靠性。

核心定位与解决的核心问题

RAG 流程中常见的痛点包括:

  1. 检索到的文档冗余或噪音过多,导致 LLM 注意力分散;
  2. 检索结果与用户问题的语义匹配度低,增强效果有限;
  3. 上下文拼接方式简单(如直接拼接),LLM 难以高效提取关键信息;
  4. 缺乏对检索质量的评估与二次优化机制。

RetrievalAugmentationAdvisor 正是针对这些痛点,通过 “评估 - 优化 - 增强” 的闭环逻辑,让检索结果更好地服务于生成环节。

ContextualQueryAugmenter

默认情况,空上下文模型会被RetrievalAugmentationAdvisor命令不回答。但ContextualQueryAugmenter会对空上下文做出一些处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值