rag的具体案例:通过es在意图识别的时候进行个命中。

1. 有 ES 吗 ------ 有,但只有一个用途

src/es/(3 个文件)+ 共享库 yzliteclaw_infra 的 ESClient / EmbeddingFactory:

文件 职责
src/es/cache.py EsIntentCache.lookup():混合检索 + rerank + 硬命中判定
src/es/rerank.py 纯函数加权 rerank + 意图签名抽取
src/es/factory.py build_es_intent_cache():双开关 + Fail-Safe

接线:src/main.py 构建 → src/graph.py:406,443 → src/nodes/intent.py:485(在 llm_intent 之前拦截)。

2. 现状

配置 (config/supervisor.yaml)

  • 索引 supervisor-agent-intent-cache-v1
  • Embedding:TokenHub kinfra-text-embedding-4b,2560 维
  • 阈值:向量召回 0.8 / 硬命中 0.95 / 向量权重 0.5 / TopM 10 / TopK 3 / 超时 1000ms
  • es_prompt_version: "prompt-v2.1" ------ 检索 filter 用它,改 prompt 必须 bump

部署开关(关键)

环境 ES_ENABLED INTENT_ES_CACHE_ENABLED ES_URL
base false --- 占位 192.168.255.245:9200
dev true true http://elasticsearch:9200
test 值写 true,但注释写「明确不上 ES、双开关均显式 false」 true elastic.svc:9200(注释说"仅占位不生效")

→ test overlay 的注释和取值自相矛盾(注释说关、值写的开),这是个真实的不一致,得确认哪个是意图。

数据现状(最要紧的) :种子文件 scripts/es_seed_data.json 只有 1 条 (我要去云海大厦1栋 → transport-agent),而设计文档要求「每类意图示例记录 >10 」。→ 索引数据远未达标,缓存命中率≈0,ES 层实际几乎不生效。

本地调试看不到它:evals/intent/run_intent_node.py 强制 es_cache=None(保证真走 LLM),我这几轮验证都是绕过 ES 的。

3. 实现了什么功能

意图缓存(语义缓存),不是知识库:

复制代码
query → embedding(2560d)
   ├─ ES 全文 BM25(ik_max_word / ik_smart 中文分词)→ Top10
   └─ ES kNN 向量(cosine, num_candidates=50)→ Top10,再按 ≥0.8 过滤
   → 应用层 rerank:rerank = ft_norm×(1-0.5) + vec×0.5(BM25 用 top2 截顶归一化)
   → 硬命中判定:① TopK(3) 内存在 rerank ≥ 0.95
                 ② 这些高分候选的「意图签名」(agent 集合)完全相同
   → 命中:直接复用缓存的 intents_payload + plan_payload,跳过 LLM(resolved_by=ES_HIT)
   → 未命中 / 超时 / 异常:静默降级 → LLM → KEYWORD 责任链

索引里存的是 intents_payload(意图 JSON)+ plan_payload(计划),object enabled:false(只存不索引)。设计文档原文目标:"优化意图识别效率,实现首 Token 输出 <2S"。

4. 能不能达到传统 RAG 效果 ------ 不能,它也不是 RAG

维度 传统 RAG 本项目的 ES
索引内容 知识文档 chunk 意图 + 计划 payload(路由答案)
命中后动作 召回内容 → 喂给 LLM 生成答案 直接返回缓存结果,不生成
生成环节 有(核心) 无
目标 知识问答 / 事实接地 省 LLM 调用、降延迟、结果一致

相同点 :检索技术栈与 RAG 高度一致(中文分词 BM25 + dense_vector kNN + 混合召回 + 应用层 rerank + 阈值 + Fail-Safe 降级)------所以它是**"RAG 式检索"但不含"生成"**,工程上就是 semantic cache。

真正的知识型 RAG 不在 supervisor :docs/dd/supervisor/8_env.yaml 明确写「v4 解耦:supervisor 不再使用 Elasticsearch 」「向量库 / RAG 知识库」elasticsearch: {};知识检索在各子 Agent 内部(如 query-agent 自建 Wiki RAG ES 索引),supervisor 只做路由与编排。

⚠️ 三个要提醒你的点

  1. 改 prompt 必须 bump es_prompt_version (当前 prompt-v2.1)。你让我这几轮改 intent_recognition.md 都没 bump ------ 若 dev 的 ES 里有对应旧缓存且命中,就会出现"改了不生效"(虽然目前只种了 1 条、影响面小,但这个机制坑是存在的)。
  2. test overlay 注释与取值矛盾,建议统一(要么改值、要么改注释)。
  3. 索引数据几乎为空(1 条 vs 设计要求每类 >10),ES 层的收益目前等于没有;要用起来得先补种子数据。

与文档的矛盾

8_env.yaml 说「supervisor 不再使用 Elasticsearch」,但代码里 ES 意图缓存明确存在、dev 也已开启 ------ 文档没随实现更新(或者说 ES 意图缓存是解耦后以"缓存"形态回归的)。

需要我做什么吗?(补种子数据 / 修 test overlay 一致性 / 对齐文档 / 还是只是了解现状)

相关推荐
ADAI_Bowen8 小时前
写文章 - 知乎
大数据·运维·人工智能
2601_967212728 小时前
安全型轨道式插座合规资质核查与工程选型技术要点
大数据·经验分享·安全
人工智能培训8 小时前
知识图谱:结构化表达实体与关系的知识组织技术
大数据·人工智能·算法·重构·生活·知识图谱
GIS数据转换器9 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
starzy19909 小时前
Kafka写数据入口:消息进了Broker之后交给谁
大数据·kafka
龍德明宇10 小时前
AI 和办事系统,是同一台机器的两张照片-龍德明宇
大数据·人工智能·负主体性
阿里云大数据AI技术10 小时前
云栖实录|从代码上下文到千亿级文档:Qoder × 阿里云 Elasticsearch 落地生产级Agent向量检索
人工智能·elasticsearch
郝学胜-神的一滴11 小时前
AI 编程智能体 17:四步搞定专属AI智能体
大数据·人工智能·python·神经网络·算法·langchain·强化学习
vx1530278236211 小时前
CDGA|AI时代,数据治理的位置下沉了吗?
大数据·人工智能·cdga·数据治理
程序员梅雨11 小时前
【从零开始学习数据仓库 | 第一篇】:维度建模理论
大数据·数据仓库·学习·阿里云·数据分析