基于Weaviate的开源检索增强生成(RAG)聊天机器人,提供端到端、流畅且用户友好的RAG解决方案

BSD-3-ClausePythonVerbaweaviate 7.4k Last Updated: July 14, 2025

Verba项目详细介绍

项目概述

Verba是一个由Weaviate开发的开源检索增强生成(RAG)应用程序,被称为"The Golden RAGtriever"。它提供了一个端到端、流畅且用户友好的RAG解决方案,用户可以通过简单的步骤探索数据集并提取洞察,无论是在本地使用Ollama和Huggingface,还是通过LLM提供商如Anthropic、Cohere和OpenAI。

核心特性

🤖 模型支持

  • 本地模型: 支持Ollama(如Llama3)和HuggingFace模型
  • 云端模型: 集成OpenAI、Anthropic、Cohere、Groq、Novita AI、Upstage等主流AI服务商
  • 嵌入模型: 支持多种嵌入模型,包括Weaviate、SentenceTransformers、VoyageAI等

📁 数据支持

  • 文件类型: 支持.txt、.md、.pdf、.csv、.docx、.pptx等多种格式
  • 数据源: 可从本地文件系统、GitHub仓库、URL等导入数据
  • 特殊功能:
    • 通过Firecrawl进行网页抓取
    • 通过UpstageDocumentParse解析文档
    • 通过AssemblyAI处理音频文件

✨ RAG功能特性

  • 混合搜索: 结合语义搜索和关键词搜索
  • 自动补全建议: 提供查询建议功能
  • 智能过滤: 支持按文档、文档类型等进行过滤
  • 可定制元数据: 完全控制元数据设置
  • 异步摄取: 异步数据摄取以提高处理速度

🗡️ 文档分块技术

  • Token分块: 基于Token进行文档分块
  • 句子分块: 使用spaCy进行句子级别分块
  • 段落分块: 支持段落级别的文档分块

技术架构

Verba采用模块化架构设计,将RAG过程分解为几个独立的模块化步骤,包括:

  1. ReaderManager: 接收字符串列表(路径、URL或文本),输出Verba文档列表
  2. ChunkerManager: 接收文档列表并将每个文档文本分块为更小的片段
  3. EmbeddingManager: 接收文档列表并将其嵌入到Weaviate中

部署方式

💻 本地部署

使用Weaviate Embedded在本地运行:

pip install goldenverba
verba start

🐳 Docker部署

git clone https://github.com/weaviate/Verba
docker compose up -d --build

🌩️ 云端部署

连接到Weaviate Cloud Services (WCS)实例

⚙️ 自定义部署

支持连接到自托管的Weaviate实例

使用流程

1. 环境配置

创建.env文件配置API密钥:

# OpenAI配置
OPENAI_API_KEY=your_openai_key

# Anthropic配置  
ANTHROPIC_API_KEY=your_anthropic_key

# Weaviate云端配置
WEAVIATE_URL_VERBA=your_weaviate_url
WEAVIATE_API_KEY_VERBA=your_weaviate_key

# Ollama本地配置
OLLAMA_URL=http://localhost:11434

2. 数据导入

  • 通过Web界面选择"Import Data"
  • 支持添加文件、目录或URL
  • 可对每个文件进行个性化配置

3. 配置RAG管道

在"Config"页面配置:

  • 选择嵌入模型
  • 选择生成模型
  • 设置分块策略
  • 配置检索参数

4. 开始对话

在"Chat"页面:

  • 输入问题获得相关答案
  • 查看语义相关的文档片段
  • 获得AI生成的综合回答

特色功能

📊 3D向量可视化

提供向量数据的3D可视化界面,帮助用户理解数据分布

🎨 可定制前端

完全可定制的前端界面,支持品牌定制

🔄 语义缓存

利用Weaviate的语义缓存功能,嵌入生成的响应和查询,确保重复查询通过检查缓存中之前处理的语义相同查询来快速处理。

🤝 RAG库集成

  • LangChain: 已支持LangChain RAG管道
  • Haystack: 计划支持
  • LlamaIndex: 计划支持

应用场景

  1. 个人知识管理: 构建个人文档库的智能查询系统
  2. 企业文档检索: 帮助员工快速找到相关企业文档和信息
  3. 研究辅助: 协助研究人员分析和查询研究资料
  4. 客户服务: 构建基于企业知识库的智能客服系统
  5. 教育培训: 创建交互式学习材料查询系统

项目状态

该项目由社区驱动,Weaviate提供开源支持。虽然团队努力快速解决问题,但维护紧迫性可能不如生产软件。欢迎社区贡献以帮助项目稳定运行。

技术要求

  • Python版本: >=3.10.0, <3.13.0
  • 操作系统: Linux、macOS(Windows上的Weaviate Embedded暂不支持)
  • 硬件: 根据选择的模型和数据量而定

开源贡献

项目欢迎各种形式的贡献:

  • 功能改进和bug修复
  • 文档完善
  • 新功能建议
  • 测试和反馈

详细信息请参考项目的贡献指南技术文档

未来发展

根据项目路线图,计划中的功能包括:

  • 高级查询功能(基于LLM评估的任务委托)
  • 重排序功能(基于上下文的结果重排序)
  • RAG评估界面
  • 更多RAG库集成

Verba代表了RAG技术的最佳实践实现,为用户提供了一个功能强大、易于使用的智能文档查询解决方案。

Star History Chart