欢迎使用 Verba:The Golden RAGtriever,这是一个社区驱动的开源应用程序,旨在提供一个开箱即用、端到端、简化且用户友好的检索增强生成(RAG)界面。只需几个简单的步骤,即可轻松探索您的数据集并提取洞察,无论是通过本地的 Ollama 和 Huggingface,还是通过 Anthrophic、Cohere 和 OpenAI 等 LLM 提供商。这个项目是为社区而建,也由社区共建,请注意,它的维护可能不如其他 Weaviate 生产应用程序那样及时。欢迎随时为项目做出贡献,帮助我们让 Verba 变得更好!<3
pip install goldenverba

Verba 是一个完全可定制的个人助手,利用检索增强生成(RAG)来查询和与您的数据交互,支持本地或云端部署。它可以解答关于您的文档的问题,交叉引用多个数据点,或从现有知识库中获取洞察。Verba 将最先进的 RAG 技术与 Weaviate 的上下文感知数据库相结合。您可以根据个人用例,在不同的 RAG 框架、数据类型、分块与检索技术以及 LLM 提供商之间进行选择。
Weaviate 很自豪能为社区提供这个开源项目。虽然我们努力尽快解决问题,但请理解,它的维护可能不如生产软件那样严格。我们欢迎并鼓励社区贡献,以帮助其平稳运行。非常感谢您帮助我们快速修复开放问题。
| 🤖 模型支持 | 已实现 | 描述 |
|---|---|---|
| Ollama (例如 Llama3) | ✅ | 由 Ollama 驱动的本地嵌入和生成模型 |
| HuggingFace (例如 MiniLMEmbedder) | ✅ | 由 HuggingFace 驱动的本地嵌入模型 |
| Cohere (例如 Command R+) | ✅ | Cohere 的嵌入和生成模型 |
| Anthrophic (例如 Claude Sonnet) | ✅ | Anthrophic 的嵌入和生成模型 |
| OpenAI (例如 GPT4) | ✅ | OpenAI 的嵌入和生成模型 |
| Groq (例如 Llama3) | ✅ | Groq 的生成模型 (LPU 推理) |
| Novita AI (例如 Llama3.3) | ✅ | Novita AI 的生成模型 |
| Upstage (例如 Solar) | ✅ | Upstage 的嵌入和生成模型 |
| 🤖 嵌入支持 | 已实现 | 描述 |
|---|---|---|
| Weaviate | ✅ | 由 Weaviate 驱动的嵌入模型 |
| Ollama | ✅ | 由 Ollama 驱动的本地嵌入模型 |
| SentenceTransformers | ✅ | 由 HuggingFace 驱动的嵌入模型 |
| Cohere | ✅ | Cohere 的嵌入模型 |
| VoyageAI | ✅ | VoyageAI 的嵌入模型 |
| OpenAI | ✅ | OpenAI 的嵌入模型 |
| Upstage | ✅ | Upstage 的嵌入模型 |
| 📁 数据支持 | 已实现 | 描述 |
|---|---|---|
| UnstructuredIO | ✅ | 通过 Unstructured 导入数据 |
| Firecrawl | ✅ | 通过 Firecrawl 抓取和爬取 URL |
| UpstageDocumentParse | ✅ | 通过 Upstage Document AI 解析文档 |
| PDF 导入 | ✅ | 将 PDF 导入 Verba |
| GitHub & GitLab | ✅ | 从 Github 和 GitLab 导入文件 |
| CSV/XLSX 导入 | ✅ | 将表格数据导入 Verba |
| .DOCX | ✅ | 导入 .docx 文件 |
| 多模态 (使用 AssemblyAI) | ✅ | 通过 AssemblyAI 导入和转录音频 |
| ✨ RAG 特性 | 实现状态 | 描述 |
|---|---|---|
| 混合搜索 | ✅ | 语义搜索与关键词搜索相结合 |
| 自动完成建议 | ✅ | Verba 提供自动完成建议 |
| 过滤 | ✅ | 在执行 RAG 之前应用过滤器(例如文档、文档类型等) |
| 可自定义元数据 | ✅ | 自由控制元数据 |
| 异步导入 | ✅ | 异步导入数据以加速流程 |
| 高级查询 | 计划中 ⏱️ | 基于 LLM 评估的任务委派 |
| 重排序 | 计划中 ⏱️ | 根据上下文对结果重新排序以提高效果 |
| RAG 评估 | 计划中 ⏱️ | 用于评估 RAG 管道的界面 |
| 智能体 RAG | 不在范围 ❌ | 智能体 RAG 管道 |
| 图 RAG | 不在范围 ❌ | 基于图的 RAG 管道 |
| 🗡️ 分块技术 | 已实现 | 描述 |
|---|---|---|
| 令牌 | ✅ | 通过 spaCy 按令牌分块 |
| 句子 | ✅ | 通过 spaCy 按句子分块 |
| 语义 | ✅ | 按语义句子相似性分块和分组 |
| 递归 | ✅ | 基于规则递归分块数据 |
| HTML | ✅ | 分块 HTML 文件 |
| Markdown | ✅ | 分块 Markdown 文件 |
| 代码 | ✅ | 分块代码文件 |
| JSON | ✅ | 分块 JSON 文件 |
| 🆒 额外亮点 | 实现状态 | 描述 |
|---|---|---|
| Docker 支持 | ✅ | Verba 可通过 Docker 部署 |
| 可自定义前端 | ✅ | Verba 的前端可通过前端完全自定义 |
| 向量查看器 | ✅ | 在 3D 中可视化您的数据 |
| 多用户协作 | 不在范围 ❌ | Verba 中的多用户协作 |
| 🤝 RAG 库 | 已实现 | 描述 |
|---|---|---|
| LangChain | ✅ | 实现 LangChain RAG 管道 |
| Haystack | 计划中 ⏱️ | 实现 Haystack RAG 管道 |
| LlamaIndex | 计划中 ⏱️ | 实现 LlamaIndex RAG 管道 |
缺少了什么功能?欢迎创建新的 Issue 或讨论来提出您的想法!

您有三种部署 Verba 的选项:
pip install goldenverba
git clone https://github.com/weaviate/Verba
pip install -e .
前提条件:如果不使用 Docker,请确保您的系统已安装 Python >=3.10.0,<3.13.0。
git clone https://github.com/weaviate/Verba
docker compose --env-file <your-env-file> up -d --build
如果您不熟悉 Python 和虚拟环境,请阅读 Python 教程指南。
您可以在 Verba 前端设置所有 API 密钥,但为了简化操作,我们也可以准备一个 .env 文件,Verba 会自动在其中查找密钥。在您要启动 Verba 的同一目录中创建一个 .env 文件。您可以在 goldenverba 目录中找到 .env.example 文件。
确保只设置您打算使用的环境变量,缺失或不正确的环境变量值可能导致错误。
以下是您可能需要的 API 密钥和变量的完整列表:
| 环境变量 | 值 | 描述 |
|---|---|---|
| WEAVIATE_URL_VERBA | 您托管的 Weaviate 集群的 URL | 连接到您的 WCS 集群 |
| WEAVIATE_API_KEY_VERBA | 您托管的 Weaviate 集群的 API 凭证 | 连接到您的 WCS 集群 |
| ANTHROPIC_API_KEY | 您的 Anthropic API 密钥 | 获取 Anthropic 模型的访问权限 |
| OPENAI_API_KEY | 您的 OpenAI 密钥 | 获取 OpenAI 模型的访问权限 |
| OPENAI_EMBED_API_KEY | 您的 OpenAI 密钥 | 为嵌入使用不同的端点 |
| OPENAI_BASE_URL | OpenAI 实例的 URL | 模型 |
| OPENAI_EMBED_BASE_URL | OpenAI 实例的 URL | 为嵌入使用不同的端点 |
| OPENAI_MODEL | 选择 OpenAI 作为生成器时要使用的模型名称 | 默认值:端点返回的列表中的第一个模型 |
| OPENAI_EMBED_MODEL | 选择 OpenAI 作为嵌入器时要使用的 OpenAI 嵌入模型名称 | 默认值:text-embedding-3-small |
| OPENAI_CUSTOM_EMBED | true | false |
允许 Verba 识别自定义嵌入模型名称(不仅是 OpenAI 的) |
| COHERE_API_KEY | 您的 API 密钥 | 获取 Cohere 模型的访问权限 |
| GROQ_API_KEY | 您的 Groq API 密钥 | 获取 Groq 模型的访问权限 |
| NOVITA_API_KEY | 您的 Novita API 密钥 | 获取 Novita AI 模型的访问权限 |
| OLLAMA_URL | 您的 Ollama 实例的 URL (例如 http://localhost:11434 ) | 获取 Ollama 模型的访问权限 |
| UNSTRUCTURED_API_KEY | 您的 API 密钥 | 获取 Unstructured 数据导入的访问权限 |
| UNSTRUCTURED_API_URL | Unstructured 实例的 URL | 获取 Unstructured 数据导入的访问权限 |
| ASSEMBLYAI_API_KEY | 您的 API 密钥 | 获取 AssemblyAI 数据导入的访问权限 |
| GITHUB_TOKEN | 您的 GitHub 令牌 | 获取通过 GitHub 导入数据的访问权限 |
| GITLAB_TOKEN | 您的 GitLab 令牌 | 获取通过 GitLab 导入数据的访问权限 |
| FIRECRAWL_API_KEY | 您的 Firecrawl API 密钥 | 获取通过 Firecrawl 导入数据的访问权限 |
| VOYAGE_API_KEY | 您的 VoyageAI API 密钥 | 获取通过 VoyageAI 使用嵌入模型的访问权限 |
| EMBEDDING_SERVICE_URL | 您的嵌入服务实例的 URL | 获取通过 Weaviate 嵌入服务 使用嵌入模型的访问权限 |
| EMBEDDING_SERVICE_KEY | 您的嵌入服务密钥 | 获取通过 Weaviate 嵌入服务 使用嵌入模型的访问权限 |
| UPSTAGE_API_KEY | 您的 Upstage API 密钥 | 获取 Upstage 模型的访问权限 |
| UPSTAGE_BASE_URL | Upstage 实例的 URL | 模型 |
| DEFAULT_DEPLOYMENT | Local, Weaviate, Custom, Docker | 设置默认部署模式 |
| SYSYEM_MESSAGE_PROMPT | 提示文本值 | 默认值以:"You are Verba, a chatbot for..." 开头 |
| OLLAMA_MODEL | 您的 Ollama 模型 | 设置要使用的默认 Ollama 模型 |
| OLLAMA_EMBED_MODEL | 您的 Ollama 嵌入模型 | 设置要使用的默认 Ollama 嵌入模型 |

Verba 根据您的需求提供了连接 Weaviate 实例的灵活性。您有三种选择:
💻 Weaviate Embedded
Embedded Weaviate 是一种部署模式,它从您的应用程序代码中运行 Weaviate 实例,而不是从独立的 Weaviate 服务器安装中运行。当您在 Local Deployment 模式下运行 Verba 时,它将在后台设置和管理 Embedded Weaviate。请注意,Weaviate Embedded 在 Windows 上不受支持,并且处于实验模式,可能会带来意外错误。我们建议使用 Docker 部署或云部署。您可以在这里阅读更多关于 Weaviate Embedded 的信息。
🌩️ Weaviate 云部署 (WCD)
如果您更喜欢基于云的解决方案,Weaviate Cloud (WCD) 提供了一个可扩展的托管环境。按照 Weaviate 集群设置指南 学习如何设置云集群并获取 API 密钥。
🐳 Docker 部署
另一种本地替代方案是使用 Docker 部署 Weaviate。更多详情,请遵循 如何使用 Docker 安装 Verba 部分。

⚙️ 自定义 Weaviate 部署
如果您自己托管 Weaviate,可以在 Verba 中使用 Custom 部署选项。这将允许您指定 Weaviate 实例的 URL、端口和 API 密钥。
Verba 支持 Ollama 模型。在您的设备上下载并安装 Ollama (https://ollama.com/download)。确保使用