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. 01审查 RAG 组件代码
  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批处理、缓存、去重

核心模式

文档数据类
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
带熔断器的嵌入器
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 模式的详细清单,请参阅各主题文件。

评论

支持 Markdown