基于 LanceDB 和 Pydantic AI 的本地优先 Agentic RAG 框架。支持混合检索、多 Agent 协作研究、代码沙箱执行及 40+ 种文档格式解析,兼容 MCP 协议。
项目概述#
haiku.rag 是一个功能强大的 RAG(检索增强生成)解决方案,旨在通过本地优先的方式处理私有数据。它结合了 LanceDB 的高效向量检索与 Pydantic AI 的 Agent 编排能力,由作者 ggozad 维护,当前版本 0.32.0,采用 MIT 许可证。
核心特性#
多模态 Agent 支持#
- QA Agent:精准问答,支持页码、章节等引用溯源
- Research Agent:基于 pydantic-graph 的多步工作流(规划→搜索→评估→综合)
- RLM Agent:沙箱化 Python 代码执行,支持跨文档计算与聚合
- Conversational RAG:具备会话记忆的多轮对话能力
深度文档理解#
- 基于 Docling 引擎,支持 PDF、DOCX、PPTX、图片等 40+ 格式
- 保留文档逻辑结构(标题、段落、页码),支持上下文扩展
- Visual Grounding:在原始页面图像上高亮显示检索片段
混合检索技术#
- 向量搜索 + 全文搜索(BM25)+ Reciprocal Rank Fusion 融合排序
- 支持 MxBAI、Cohere、Zero Entropy、vLLM 重排序
- Time Travel:查询特定历史时间点的数据状态
部署与集成#
存储架构#
- 嵌入式 LanceDB,无需额外服务器
- 支持 S3、GCS、Azure、LanceDB Cloud 云存储
- 文件系统监控与自动索引
接口方式#
- 完整 CLI 与 Python API
- MCP Server:可集成至 Claude Desktop 等 AI 助手
- Inspector TUI:终端界面浏览文档、chunks 和搜索结果
环境要求#
- Python 3.12+
- Ollama(默认 Embedding 和 LLM 后端)
安装方式#
# 完整安装
pip install haiku.rag
# 精简安装
pip install haiku.rag-slim
快速上手#
# 索引文档
haiku-rag add-src paper.pdf
# 混合搜索
haiku-rag search "attention mechanism"
# 带引用问答
haiku-rag ask "What datasets were used?" --cite
# 研究模式
haiku-rag research "What are the limitations?"
# MCP 服务
haiku-rag serve --mcp --stdio
Python API 示例#
from haiku.rag.client import HaikuRAG
async with HaikuRAG("research.lancedb", create=True) as rag:
await rag.create_document_from_source("paper.pdf")
results = await rag.search("self-attention")
answer, citations = await rag.ask("What is the complexity?")
支持的 Provider#
- Embeddings: Ollama(默认)、OpenAI、VoyageAI、LM Studio、vLLM
- QA/Research: 所有 Pydantic AI 支持的模型
适用场景#
- 企业内部知识库问答
- 学术文献研究分析
- 多文档聚合计算的复杂数据分析任务
- AI 助手(如 Claude Desktop)的本地记忆/知识检索后端