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平台,无论是个人项目还是企业级应用,都能快速构建智能的文档问答系统。其开源的特性和活跃的社区支持使其成为构建"第二大脑"应用的理想选择。