rag について
ragは、動的な情報を必要とするAIワークフロー向けに、外部コンテンツを取得してプロンプトに加えるOpenClaw用の検索拡張生成スキルです。ベクトルデータベース検索、文書分割、関連度スコアリングに対応し、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 トークン未満にしてください。
主なコマンド/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で読み込みます。
統合に関する注意
AI パイプラインの前後に RAG 呼び出しを組み込んで統合します。まず 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 スキル。