rag は何をしますか?
RAG(検索拡張生成)システム向けに、ドキュメントのチャンク分割、埋め込み生成、ベクトルストレージ、検索パイプラインを実装します。RAGアプリケーションの構築、ドキュメントQ&Aシステムの作成、またはAIとナレッジベースの統合に使用します。
概要
このスキルは、RAG(Retrieval-Augmented Generation)パイプラインの主要コンポーネントを提供します。これにより、AIエージェントは外部のナレッジベースから関連情報を取得し、それを利用してより正確でコンテキストに応じた応答を生成できます。
機能
- ドキュメントチャンク分割: 大きなドキュメントを管理可能なチャンクに分割します。現在の実装では、単純なテキスト分割がサポートされています。
- 埋め込み生成: 各チャンクのベクトル表現を生成します。
sentence-transformersライブラリを使用して高品質な埋め込みを生成します。 - ベクトルストレージ: 埋め込みを保存し、効率的な類似性検索を可能にします。
FAISSライブラリを使用して高速なベクトルインデックスを構築します。 - 検索パイプライン: クエリに関連するチャンクを取得し、生成プロセスに渡します。
使用方法
インストール
pip install sentence-transformers faiss-cpu
基本的な使用例
from skill import DocumentChunker, EmbeddingGenerator, VectorStore, RetrievalPipeline
# ドキュメントをチャンクに分割
chunker = DocumentChunker(chunk_size=512, overlap=50)
chunks = chunker.chunk_document("your_document.txt")
# 埋め込みを生成
embedder = EmbeddingGenerator(model_name="all-MiniLM-L6-v2")
embeddings = embedder.generate_embeddings(chunks)
# ベクトルストアを作成
vector_store = VectorStore(dimension=embeddings.shape[1])
vector_store.add_embeddings(embeddings, chunks)
# 検索パイプラインを作成
pipeline = RetrievalPipeline(vector_store, embedder)
results = pipeline.retrieve("your query here", top_k=5)
アーキテクチャ
+----------------+ +-------------------+ +--------------+ +-------------------+
| Document | --> | Embedding | --> | Vector | --> | Retrieval |
| Chunker | | Generator | | Store | | Pipeline |
+----------------+ +-------------------+ +--------------+ +-------------------+
設定
chunk_size: ドキュメントチャンクの最大サイズ(文字数、デフォルト: 512)chunk_overlap: 連続するチャンク間のオーバーラップ文字数(デフォルト: 50)embedding_model: 使用する埋め込みモデル(デフォルト:"all-MiniLM-L6-v2")top_k: 検索時に取得するチャンク数(デフォルト: 5)
対応プラットフォーム
- Claude Code
- Cursor
- Codex
- その他のAIエージェントプラットフォーム
注意事項
- 大量のドキュメントを扱う場合は、効率的なインデックス作成のために
faiss-gpuの使用を検討してください。 - 埋め込みモデルは、ドメイン固有のテキストに対して微調整することで、検索精度を向上させることができます。
- チャンクサイズとオーバーラップは、特定のユースケースに合わせて調整してください。
ライセンス
MIT