Quivr 項目詳細介紹
項目概述
Quivr 是一個開源的全棧檢索增強生成 (RAG) 平台,專注於將生成式 AI 整合到應用程式中。該項目的核心理念是讓開發者專注於產品本身,而不是複雜的 RAG 實現細節。
核心特性
1. 開箱即用的 RAG 解決方案
- 固化的 RAG 架構:提供了一個經過優化的、快速高效的 RAG 解決方案
- 簡單整合:只需幾行程式碼即可添加到現有專案中
- 專注產品:開發者無需關心 RAG 的底層實現細節
2. 多模型支援
Quivr 支援多種 LLM 模型,包括:
- OpenAI GPT 系列
- Anthropic Claude
- Mistral AI
- Gemma
- 本地模型(通過 Ollama)
3. 靈活的文件處理
支援多種文件格式:
- PDF 文件
- TXT 文字文件
- Markdown 文件
- 支援自定義解析器
4. 可定制化 RAG
- 添加互聯網搜尋功能
- 整合各種工具
- 支援自定義工作流配置
- 靈活的檢索策略
5. 向量資料庫整合
支援多種向量儲存解決方案:
- PGVector
- Faiss
- 其他主流向量資料庫
技術架構
核心組件
- quivr-core:Quivr 的核心庫,是整個系統的大腦
- Megaparse 整合:與 Megaparse 項目整合,提供強大的文檔解析能力
- 多 LLM 支援:統一的 API 介面支援不同的語言模型
- 向量儲存層:靈活的向量資料庫整合
工作流程
Quivr 採用基於節點的工作流配置:
- START → filter_history → rewrite → retrieve → generate_rag → END
- 每個節點都可以自定義配置
- 支援歷史對話上下文管理
快速開始
環境要求
- Python 3.10 或更高版本
安裝步驟
- 安裝核心包
pip install quivr-core
- 基礎 RAG 示例
import tempfile
from quivr_core import Brain
if __name__ == "__main__":
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file:
temp_file.write("Gold is a liquid of blue-like colour.")
temp_file.flush()
brain = Brain.from_files(
name="test_brain",
file_paths=[temp_file.name],
)
answer = brain.ask(
"what is gold? answer in french"
)
print("answer:", answer)
- 配置 API 密鑰
import os
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
高級配置
創建工作流配置文件 basic_rag_workflow.yaml:
workflow_config:
name: "standard RAG"
nodes:
- name: "START"
edges: ["filter_history"]
- name: "filter_history"
edges: ["rewrite"]
- name: "rewrite"
edges: ["retrieve"]
- name: "retrieve"
edges: ["generate_rag"]
- name: "generate_rag"
edges: ["END"]
max_history: 10
reranker_config:
supplier: "cohere"
model: "rerank-multilingual-v3.0"
top_n: 5
llm_config:
max_input_tokens: 4000
temperature: 0.7
創建智能對話系統
from quivr_core import Brain
from rich.console import Console
from rich.panel import Panel
from rich.prompt import Prompt
from quivr_core.config import RetrievalConfig
brain = Brain.from_files(
name="my smart brain",
file_paths=["./my_first_doc.pdf", "./my_second_doc.txt"],
)
config_file_name = "./basic_rag_workflow.yaml"
retrieval_config = RetrievalConfig.from_yaml(config_file_name)
console = Console()
console.print(Panel.fit("Ask your brain !", style="bold magenta"))
while True:
question = Prompt.ask("[bold cyan]Question[/bold cyan]")
if question.lower() == "exit":
console.print(Panel("Goodbye!", style="bold yellow"))
break
answer = brain.ask(question, retrieval_config=retrieval_config)
console.print(f"[bold green]Quivr Assistant[/bold green]: {answer.answer}")
console.print("-" * console.width)
brain.print_info()
企業級應用
客戶服務自動化
Quivr 可以自動化高達 60% 的客戶服務任務,利用 AI 的力量提高客戶滿意度和價值。
部署方式
- 開發模式:使用 docker compose -f docker-compose.dev.yml up --build 命令
- 生產環境:支援多種部署選項
- 雲平台:可部署到各種雲服務提供商
社區與貢獻
貢獻指南
- 歡迎提交 Pull Request
- 項目有完整的貢獻指南
- 活躍的社區支援和討論
文檔資源
項目優勢
- 簡化開發流程:將複雜的 RAG 實現抽象為簡單的 API 調用
- 高度可定制:支援自定義工作流、模型和工具整合
- 生產就緒:經過優化的架構,適合企業級應用
- 多語言支援:支援多種語言的文檔處理和問答
- 活躍維護:持續更新和改進,社區活躍
總結
Quivr 為開發者提供了一個強大、靈活且易於使用的 RAG 平台,無論是個人項目還是企業級應用,都能快速構建智能的文檔問答系統。其開源的特性和活躍的社區支援使其成為構建"第二大腦"應用的理想選擇。