mcpField
R
rag-skills

rag-skills

github.com/llama-farm開発83658 回インストール21 週間前に更新
リポジトリ

rag-skills について

LlamaFarmのRAGコンポーネント向けのフレームワーク固有の実践方法とコードレビュー項目です。python-skillsを拡張し、LlamaIndex、ChromaDB、Celeryのパターンを扱います。

主な機能

  1. 01LlamaIndexの文書処理ガイド
  2. 02ChromaDBの利用チェック項目
  3. 03Celeryのタスク処理指針
  4. 04検索戦略パターン
  5. 05性能とキャッシュの確認項目

活用シーン

  1. 01RAGコンポーネントのコードレビュー
  2. 02文書分割とメタデータ保持の確認
  3. 03ベクトルストレージとタスク振り分けの検証
  4. 04埋め込みのバッチ処理とキャッシュの評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/llama-farm/llamafarm --skill rag-skills

インストール後、Claude Code で/rag-skillsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

celery.md
chromadb.md
llamaindex.md
performance.md

詳細

LlamaFarm 向け RAG スキル

RAG コンポーネントに特化したパターンとコードレビュー用チェックリストです。

拡張元:python-skills - ここでは、Python のベストプラクティスがすべて適用されます。

コンポーネントの概要

項目テクノロジーバージョン
PythonPython3.11+
ドキュメント処理LlamaIndex0.13+
ベクトルストレージChromaDB1.0+
タスクキューCelery5.5+
埋め込みUniversal/Ollama/OpenAI複数

ディレクトリ構成

rag/
├── api.py                 # Search and database APIs
├── celery_app.py          # Celery configuration
├── main.py                # Entry point
├── core/
│   ├── base.py            # Document, Component, Pipeline ABCs
│   ├── factories.py       # Component factories
│   ├── ingest_handler.py  # File ingestion with safety checks
│   ├── blob_processor.py  # Binary file processing
│   ├── settings.py        # Pydantic settings
│   └── logging.py         # RAGStructLogger
├── components/
│   ├── embedders/         # Embedding providers
│   ├── extractors/        # Metadata extractors
│   ├── parsers/           # Document parsers (LlamaIndex)
│   ├── retrievers/        # Retrieval strategies
│   └── stores/            # Vector stores (ChromaDB, FAISS)
├── tasks/                 # Celery tasks
│   ├── ingest_tasks.py    # File ingestion
│   ├── search_tasks.py    # Database search
│   ├── query_tasks.py     # Complex queries
│   ├── health_tasks.py    # Health checks
│   └── stats_tasks.py     # Statistics
└── utils/
    └── embedding_safety.py  # Circuit breaker, validation

クイックリファレンス

トピックファイル主なポイント
LlamaIndexllamaindex.mdドキュメントの解析、チャンク化、ノードへの変換
ChromaDBchromadb.mdコレクション、埋め込み、距離メトリクス
Celerycelery.mdタスクのルーティング、エラー処理、ワーカー設定
パフォーマンスperformance.mdバッチ処理、キャッシュ、重複排除

コアパターン

Document データクラス
from dataclasses import dataclass, field
from typing import Any

@dataclass
class Document:
    content: str
    metadata: dict[str, Any] = field(default_factory=dict)
    id: str = field(default_factory=lambda: str(uuid.uuid4()))
    source: str | None = None
    embeddings: list[float] | None = None
コンポーネントの抽象基底クラス
from abc import ABC, abstractmethod

class Component(ABC):
    def __init__(
        self,
        name: str | None = None,
        config: dict[str, Any] | None = None,
        project_dir: Path | None = None,
    ):
        self.name = name or self.__class__.__name__
        self.config = config or {}
        self.logger = RAGStructLogger(__name__).bind(name=self.name)
        self.project_dir = project_dir

    @abstractmethod
    def process(self, documents: list[Document]) -> ProcessingResult:
        pass
検索戦略パターン
class RetrievalStrategy(Component, ABC):
    @abstractmethod
    def retrieve(
        self,
        query_embedding: list[float],
        vector_store,
        top_k: int = 5,
        **kwargs
    ) -> RetrievalResult:
        pass

    @abstractmethod
    def supports_vector_store(self, vector_store_type: str) -> bool:
        pass
サーキットブレーカー付き Embedding
class Embedder(Component):
    DEFAULT_FAILURE_THRESHOLD = 5
    DEFAULT_RESET_TIMEOUT = 60.0

    def __init__(self, ...):
        super().__init__(...)
        self._circuit_breaker = CircuitBreaker(
            failure_threshold=config.get("failure_threshold", 5),
            reset_timeout=config.get("reset_timeout", 60.0),
        )
        self._fail_fast = config.get("fail_fast", True)

    def embed_text(self, text: str) -> list[float]:
        self.check_circuit_breaker()
        try:
            embedding = self._call_embedding_api(text)
            self.record_success()
            return embedding
        except Exception as e:
            self.record_failure(e)
            if self._fail_fast:
                raise EmbedderUnavailableError(str(e)) from e
            return [0.0] * self.get_embedding_dimension()

レビューチェックリストの概要

RAG コードをレビューする際は、以下を確認します。

  1. LlamaIndex(優先度:中)

    • チャンク化の設定が適切である
    • 解析中にメタデータが保持される
    • 未対応の形式に対するエラー処理が適切である
  2. ChromaDB(優先度:高)

    • クライアントへのアクセスがスレッドセーフである
    • 距離メトリクスが適切に選択されている
    • メタデータの型に互換性がある
  3. Celery(優先度:高)

    • タスクが正しいキューにルーティングされる
    • コンテキストを含むエラーログが記録される
    • シリアライズが適切である
  4. パフォーマンス(優先度:中)

    • 埋め込みにバッチ処理を使用する
    • 重複排除が有効になっている
    • キャッシュが適切である

grep パターンを含む詳細なチェックリストについては、各トピックのファイルを参照してください。

コメント