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 一致性 / 对齐文档 / 还是只是了解现状)

相关推荐
柏慧通云报餐2 小时前
智慧食堂食材溯源数字化方案|采购 - 入库 - 餐桌全链路记录体系落地实践
大数据·运维·人工智能
QEasycloud2 小时前
平台补贴的会计处理:总额法 vs 净额法的判定与对账影响
大数据·人工智能
用户3610588626122 小时前
Flink 窗口聚合函数详解及代码实现:从 ReduceFunction 到增量聚合 + ProcessWindowFunction 组合
大数据·flink
域智盾-终端安全管理2 小时前
文档加密系统到底多少钱?怎么收费的?
大数据·加密软件多少钱
挖掘狂人2 小时前
AI工具选型误区:别再迷信海外模型,国产工具已完成场景反超
大数据·人工智能·ai编程
梦想画家3 小时前
SQLMesh 配置:为什么值得用 Python,而不是 YAML
大数据·数据开发·sqlmesh
vx_Biye_Design3 小时前
flask学生课程笔记共享系统29026-计算机课程设计、毕业设计
java·javascript·spring boot·后端·elasticsearch·flask·课程设计
康实训3 小时前
养老实训室布局设计与器械工具配置清单
大数据·人工智能
Elastic 中国社区官方博客3 小时前
AWS 自动化根因分析:从 CloudWatch 告警到完成故障诊断,仅需 36 秒
大数据·运维·elasticsearch·自动化·aws