mcpField
R
rag

rag

github.com/alphaonedev开发50 次安装
代码仓库

关于 rag

rag 是面向 OpenClaw 的检索增强生成技能,可从外部知识源检索内容并将其加入提示词,供需要动态信息的 AI 工作流使用。它支持向量数据库相似度搜索、分块和相关性评分,并可通过 CLI、API 或代码调用。

主要功能

  1. 01从向量数据库检索文档
  2. 02将检索内容加入提示词
  3. 03支持嵌入模型向量化
  4. 04文档分块与相关性评分
  5. 05JSON 配置数据源和阈值

适用场景

  1. 01基于外部资料回答问题
  2. 02为聊天机器人补充检索上下文
  3. 03将检索结果传入生成流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill rag

安装后在 Claude Code 中输入/rag确认已加载。

详细介绍

rag

用途

此技能为 OpenClaw 实现检索增强生成(RAG),使 AI 模型能够查询外部知识库并将结果整合到回复中,从而提升问答等任务的准确性。

使用时机

当 AI 需要动态访问外部数据时,使用此技能,例如在 NLP 任务中查询向量数据库获取实时信息、弥补模型的知识盲区,或增强聊天机器人的回复。对于不依赖外部数据的纯生成任务,请勿使用此技能。

主要功能

  • 使用相似度搜索从向量数据库(例如 Pinecone、FAISS)获取文档。
  • 将检索到的内容整合到 AI 提示词中,用于生成内容。
  • 支持用于查询向量化的嵌入模型(例如通过 Hugging Face transformers)。
  • 处理大型文档的分块和相关性评分。
  • 可通过 JSON 文件配置自定义数据源和阈值。

使用模式

始终通过环境变量设置 API 密钥:export OPENCLAW_API_KEY=$SERVICE_API_KEY。使用 CLI 时,通过 openclaw rag 搭配所需标志运行。在代码中,导入此技能并调用 rag.retrieve() 等方法。模式:查询 -> 检索 -> 增强 -> 生成。确保查询少于 512 个 token,以免被截断。

常用命令/API

  • CLI 命令:openclaw rag query --db pinecone --index myindex --query "What is RAG?" --top-k 5
    • 标志:--db 指定数据库(例如 pinecone、faiss),--index 指定集合名称,--top-k 指定结果数量,--query 指定搜索字符串。
  • API 端点:POST /v1/rag/retrieve,请求体为 JSON:{"query": "Explain AI", "db": "pinecone", "top_k": 3}
    • 响应:包含 "results"(文档数组)和 "scores" 等键的 JSON 对象。
  • 代码片段(Python):
    import openclaw
    client = openclaw.Client(api_key=os.environ['OPENCLAW_API_KEY'])
    results = client.rag.retrieve(query="What is NLP?", db="faiss", top_k=4)
    
  • 配置格式:JSON 文件(例如 rag_config.json):
    {
      "db": "pinecone",
      "api_endpoint": "https://api.pinecone.io",
      "embedding_model": "text-embedding-ada-002"
    }
    
    通过以下命令加载:openclaw rag config load --file rag_config.json。

集成说明

将 RAG 调用封装在 AI 工作流中以完成集成:首先调用 rag.retrieve() 获取上下文,然后将其传递给模型的提示词。对于多技能工作流,可通过管道传递输出,将其与 "aiml" 技能串联起来(例如将 RAG 结果作为生成技能的输入)。在异步环境中,使用 await client.rag.retrieve_async() 处理异步调用。在沙盒中使用模拟数据库测试集成,以验证数据流。

错误处理

首先检查环境变量,确认常见错误(例如 $OPENCLAW_API_KEY 无效时出现的 "401 Unauthorized")是否由身份验证失败导致。对于查询错误,捕获 RetrievalError 等异常,并使用指数退避策略重试:

try:
    results = client.rag.retrieve(query=query)
except openclaw.RetrievalError as e:
    if e.status_code == 404:
        print("Database not found; create index first.")
    else:
        raise

记录所有错误的详细信息(例如错误代码、消息),并在 CLI 中使用 --debug 标志输出详细日志。调用前始终验证输入(例如确保查询是字符串)。

具体使用示例

  1. 示例 1:通过 CLI 查询检索知识
    用于回答用户问题:运行 openclaw rag query --db faiss --index docs_index --query "Summarize RAG technique" --top-k 3。此命令会从 "docs_index" 数据库中检索排名前 3 的文档并输出。通过管道传递结果:openclaw rag query ... | openclaw aiml generate --prompt "Use this context:"。

  2. 示例 2:集成代码以生成 AI 回复
    在 Python 脚本中增强聊天机器人:

    query = "What is machine learning?"
    context = client.rag.retrieve(query=query, db="pinecone", top_k=2)
    full_prompt = f"Context: {context}\nAnswer: {query}"
    response = client.aiml.generate(prompt=full_prompt)
    print(response)
    

    此代码会获取相关上下文并将其传递给 AI,以生成内容丰富的回复。

图谱关系

  • 相关技能:aiml(用于集成生成)、nlp(用于文本处理)、vector-db(用于数据存储依赖)。
  • 依赖:用于向量化的嵌入技能。
  • 使用方:用于访问外部数据的 knowledge-base 技能。

评论

支持 Markdown