关于 rag
rag 是面向 OpenClaw 的检索增强生成技能,可从外部知识源检索内容并将其加入提示词,供需要动态信息的 AI 工作流使用。它支持向量数据库相似度搜索、分块和相关性评分,并可通过 CLI、API 或代码调用。
主要功能
- 01从向量数据库检索文档
- 02将检索内容加入提示词
- 03支持嵌入模型向量化
- 04文档分块与相关性评分
- 05JSON 配置数据源和阈值
适用场景
- 01基于外部资料回答问题
- 02为聊天机器人补充检索上下文
- 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:通过 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:集成代码以生成 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 技能。