Verba 一款开源应用程序,旨在为开箱即用的检索增强生成 (RAG) 提供端到端、简化且用户友好的界面。 只需几个简单的步骤,即可在本地通过 HuggingFace 和 Ollama 或通过 OpenAI、Cohere 和 Google 等 LLM 提供商探索您的数据集并轻松提取见解。
pip install goldenverba
什么是 Verba ?
Verba 是一款完全可定制的个人助理,用于在本地或通过云部署数据查询和交互。 解决有关文档的问题、交叉引用多个数据点或从现有知识库中获取见解。 Verba 将最先进的 RAG 技术与 Weaviate 的上下文感知数据库相结合。 根据您的个人用例,在不同的 RAG 框架、数据类型、分块和检索技术以及 LLM 提供商之间进行选择。
功能列表
模型支持
🤖 Model Support | Implemented | Description |
---|---|---|
Ollama (e.g. Llama3) | ✅ | Local Embedding and Generation Models powered by Ollama |
HuggingFace (e.g. MiniLMEmbedder) | ✅ | Local Embedding Models powered by HuggingFace |
Cohere (e.g. Command R+) | ✅ | Embedding and Generation Models by Cohere |
Google (e.g. Gemini) | ✅ | Embedding and Generation Models by Google |
OpenAI (e.g. GPT4) | ✅ | Embedding and Generation Models by OpenAI |
数据支持
📁 Data Support | Implemented | Description |
---|---|---|
PDF Ingestion | ✅ | Import PDF into Verba |
CSV/XLSX Ingestion | ✅ | Import Table Data into Verba |
Multi-Modal | planned ⏱️ | Import Multi-Modal Data into Verba |
UnstructuredIO | ✅ | Import Data through Unstructured |
RAG特征
✨ RAG Features | Implemented | Description |
---|---|---|
Hybrid Search | ✅ | Semantic Search combined with Keyword Search |
Semantic Caching | ✅ | Results saved and retrieved based on semantic meaning |
Autocomplete Suggestion | ✅ | Verba suggests autocompletion |
Filtering | planned ⏱️ | Apply Filters (e.g. documents, document types etc.) before performing RAG |
Advanced Querying | planned ⏱️ | Task Delegation Based on LLM Evaluation |
Reranking | planned ⏱️ | Rerank results based on context for improved results |
RAG Evaluation | planned ⏱️ | Interface for Evaluating RAG pipelines |
Customizable Metadata | planned ⏱️ | Free control over Metadata |
Cool Bonus
🆒 Cool Bonus | Implemented | Description |
---|---|---|
Docker Support | ✅ | Verba is deployable via Docker |
Customizable Frontend | ✅ | Verba's frontend is fully-customizable via the frontend |
RAG 图书馆
🤝 RAG Libraries | Implemented | Description |
---|---|---|
Haystack | planned ⏱️ | Implement Haystack RAG pipelines |
LlamaIndex | planned ⏱️ | Implement LlamaIndex RAG pipelines |
LangChain | planned ⏱️ | Implement LangChain RAG pipelines |
开始使用 Verba
Verba 具有三种部署选项:
- 通过 pip 安装
pip install goldenverba
- 从源代码构建
git clone https://github.com/weaviate/Verba
pip install -e .
- 使用Docker进行部署
先决条件:如果您不使用 Docker,请确保系统上安装了 Python >=3.10.0。如果您不熟悉 Python 和虚拟环境,请阅读 python 教程指南。
API Keys
在启动 Verba 之前,您需要根据您选择的技术(例如 OpenAI、Cohere 和 HuggingFace)通过 .env 文件配置对各种组件的访问。 在要启动 Verba 的同一目录中创建此 .env。您可以在 Goldenverba 目录中找到 .env.example 文件。
确保仅设置您打算使用的环境变量,缺少或不正确值的环境变量可能会导致错误。
以下是您可能需要的 API 密钥和变量的完整列表:
Environment Variable | Value | Description |
---|---|---|
WEAVIATE_URL_VERBA | URL to your hosted Weaviate Cluster | Connect to your WCS Cluster |
WEAVIATE_API_KEY_VERBA | API Credentials to your hosted Weaviate Cluster | Connect to your WCS Cluster |
OPENAI_API_KEY | Your API Key | Get Access to OpenAI Models |
OPENAI_BASE_URL | URL to OpenAI instance | Models |
COHERE_API_KEY | Your API Key | Get Access to Cohere Models |
OLLAMA_URL | URL to your Ollama instance (e.g. http://localhost:11434 ) | Get Access to Ollama Models |
OLLAMA_MODEL | Model Name (e.g. llama) | Get Access to a specific Ollama Model |
UNSTRUCTURED_API_KEY | Your API Key | Get Access to Unstructured Data Ingestion |
UNSTRUCTURED_API_URL | URL to Unstructured Instance | Get Access to Unstructured Data Ingestion |
GITHUB_TOKEN | Your GitHub Token | Get Access to Data Ingestion via GitHub |
GOOGLE_APPLICATION_CREDENTIALS | Google Credentials | Get Access to Google Models |
GOOGLE_CLOUD_PROJECT | Google Cloud Project | Get Access to Google Models |
GOOGLE_API_KEY | Your API Key | Get Access to Google Models |
VERBA_PRODUCTION | True | Run Verba in Production |
Weaviate
Weaviate 使用最先进的机器学习 (ML) 模型将您的数据(文本、图像等)转换为可搜索的矢量数据库。
Verba 可以根据您的需求灵活地连接到 Weaviate 实例。 默认情况下,如果 Verba 未检测到 WEAVIATE_URL_VERBA 和 WEAVIATE_API_KEY_VERBA 环境变量,则它会选择 Weaviate Embedded。 这种本地部署是启动 Weaviate 数据库进行原型设计和测试的最直接方法。
但是,您还有其他选择:
Weaviate 云服务 (WCS)
如果您更喜欢基于云的解决方案,Weaviate 云服务 (WCS) 可以提供可扩展的托管环境。 按照 Weaviate 集群设置指南了解如何设置云集群并获取 API 密钥。
Docker 部署另一个强大的本地替代方案是使用 Docker 部署 Weaviate。 有关更多详细信息,请参阅 Weaviate Docker 指南。
Ollama
Verba 支持 Ollama 模型。 在您的设备上下载并安装 Ollama (https://ollama.com/download)。 确保使用 ollama run <model> 安装您首选的 LLM。
使用 llama3、llama3:70b 和 mistral 进行测试。 较大的模型通常表现更好,但需要更多的计算能力。
确保 Ollama Server 在后台运行,并且您不会摄取具有不同 ollama 模型的文档,因为它们的矢量维度可能会有所不同,这会导致错误
谷歌
如果您想使用 Google 功能,请确保安装 Google Verba 软件包。
pip install goldenverba[google]
or
pip install `.[google]`
如果您使用 Docker,请相应地修改 Dockerfile
谷歌嵌入
对于 Google 嵌入,Verba 在 Google Cloud 中使用 Vertex AI Studio。 您可以在此处找到获取密钥的说明。 如果您安装了 gcloud CLI,则可以运行以下命令:gcloud auth print-access-token。 目前,该访问令牌必须每小时更新一次。
您还需要将 GOOGLE_CLOUD_PROJECT 环境变量设置为您的项目名称。
谷歌Gemini
要使用 Google Gemini,您需要一个服务帐户密钥,它是一个 JSON 文件。 要获取此信息,请转到 Google Cloud 控制台中的“项目设置”,然后转到“服务帐户”。 创建一个新的服务帐户,然后创建一个新密钥。 下载此密钥并将其放置在 Verba 的路径中。 将其命名为 gemini_secrets.json 以自动将其从 git 中排除。 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为此文件的位置,例如 gemini_secrets.json。
您还需要将 GOOGLE_CLOUD_PROJECT 环境变量设置为您的项目名称。
非结构化
Verba 支持通过非结构化 IO 导入文档(例如纯文本、.pdf、.csv 等)。 要使用它们,您需要 UNSTRUCTURED_API_KEY 和 UNSTRUCTURED_API_URL 环境变量。 您可以从非结构化获取它
UNSTRUCTURED_API_URL 默认设置为 https://api.unstructed.io/general/v0/general
开放人工智能
Verba 支持 Ada、GPT3 和 GPT4 等 OpenAI 模型。 要使用它们,您需要指定 OPENAI_API_KEY 环境变量。 你可以从 OpenAI 获取它
您还可以添加 OPENAI_BASE_URL 以使用代理,例如 LiteLLM (https://github.com/BerriAI/litellm)
OPENAI_BASE_URL=YOUR-OPENAI_BASE_URL
Azure 开放人工智能
要使用Azure OpenAI,您需要设置
- API类型:
OPENAI_API_TYPE="azure"
- 关键点和端点:
OPENAI_API_KEY=<YOUR_KEY> OPENAI_BASE_URL=http://XXX.openai.azure.com
- Azure OpenAI 资源名称,如果端点是 XXX.openai.azure.com,则为 XXX
AZURE_OPENAI_RESOURCE_NAME=<YOUR_AZURE_RESOURCE_NAME>
- 您需要为嵌入和查询设置模型。
AZURE_OPENAI_EMBEDDING_MODEL="text-embedding-ada-002" OPENAI_MODEL="gpt-4"
- 最后,由于 Azure 使用每分钟配额,您可能需要在每个块上传之间添加等待时间。 例如,如果您的限制为每分钟 240k 个令牌,如果您的块最大为 400 个令牌,则查询之间的间隔 100 毫秒应该没问题。 如果 weaviate 出现错误 429,请增加该值。
WAIT_TIME_BETWEEN_INGESTION_QUERIES_MS="100"
Huggingface
如果您想使用 HuggingFace 功能,请确保安装正确的 Verba 软件包。
pip install goldenverba[huggingface]
or
pip install `.[huggingface]`
如果您使用 Docker,请相应地修改 Dockerfile
如何使用pip进行部署
Python >=3.10.0
1. 初始化新的Python环境
python3 -m virtualenv venv
2.安装 Verba
pip install goldenverba
3.启动 Verba
verba start
您可以通过标志指定 --port 和 --host
4.访问韦尔巴
Visit localhost:8000
5.创建.env文件并添加环境变量
如何从源代码构建
- 克隆 Verba 存储库
git clone https://github.com/weaviate/Verba.git
- 初始化新的Python环境
python3 -m virtualenv venv
- 安装Verba
pip install -e .
- 启动Verba
verba start
- 访问Verba
Visit localhost:8000
- 创建.env文件并添加环境变量
如何使用 Docker 安装 Verba
Docker 是一组平台即服务产品,它使用操作系统级虚拟化以称为容器的包形式交付软件。 要开始使用 Docker 部署 Verba,请按照以下步骤操作。 如果您需要有关 Docker 使用的更多详细说明,请查看 Docker 课程。
克隆 Verba 存储库 确保您的系统上安装了 Git。 然后,打开终端或命令提示符并运行以下命令来克隆 Verba 存储库:
git clone https://github.com/weaviate/Verba.git
- 设置必要的环境变量 确保在 .env 文件中设置所需的环境变量。 您可以在 API 密钥部分阅读有关如何设置它们的更多信息
- 调整 docker-compose 文件 您可以使用 docker-compose.yml 在 verba 服务下添加所需的环境变量,还可以调整 Weaviate Docker 设置以启用身份验证或更改数据库实例的其他设置。 您可以在我们的 docker-compose 文档中阅读有关 Weaviate 配置的更多信息
请确保只添加您真正需要的环境变量。 如果您的 Weaviate 集群中没有启用身份验证,请确保不包含 WEAVIATE_API_KEY_VERBA 环境变量
使用 Docker 进行部署 安装 Docker 并克隆 Verba 存储库后,在终端或命令提示符中导航到包含 Docker Compose 文件的目录。 运行以下命令以分离模式启动 Verba 应用程序,这样它就可以在后台运行:
docker compose up -d
docker compose --env-file .env up -d
此命令将下载必要的 Docker 映像、创建容器并启动 Verba。 请记住,您的系统上必须安装 Docker 才能使用此方法。 有关 Docker 的安装说明和更多详细信息,请访问 Docker 官方文档。
访问Verba
- 您可以通过 localhost:8080 访问本地 Weaviate 实例
- 您可以通过 localhost:8000 访问 Verba 前端
如果您希望 Docker 实例安装特定版本的 Verba,您可以编辑 Dockerfile 并更改安装行。
RUN pip install -e '.'
Verba 演练
概览页面
有权访问 Verba 后,您可以使用概述页面来验证所有环境和库是否已正确设置和安装。 您可以使用管理控制台查看存储在 Weaviate Collections 中的所有数据并重置 Verba 的某些部分(例如文档、缓存、配置等)
导入您的数据
配置 Verba 后,您就可以导入数据并开始探索。 使用添加文档页面提取您的数据。 您可以在支持不同数据类型、分块技术和嵌入模型的 Reader 之间进行选择。
查询您的数据
导入数据后,您可以使用聊天页面询问任何相关问题。 您将收到与您的问题语义相关的相关块以及由您选择的模型生成的答案。 您可以在 RAG 页面下配置 RAG 管道。
开源贡献
随时欢迎您的贡献! 如果您发现任何问题,请随意贡献想法、反馈或创建问题和错误报告! 在贡献之前,请阅读贡献指南。 如果您需要任何帮助,请访问我们的 Weaviate 社区论坛!
项目架构
您可以在其技术文档和前端文档中了解有关 Verba 架构和实现的更多信息。 建议在做出任何贡献之前先查看一下它们。
已知的问题
Weaviate Embedded 目前尚未在 Windows 上运行
将在未来版本中修复,在此之前请使用 Docker 或 WCS 部署
常问问题
- Verba 是多语言的吗?
这取决于您选择的嵌入和生成模型是否支持多语言数据。 - 我可以将 Ollama Server 与 Verba Docker 一起使用吗?
是的你可以! 确保 URL 设置为:OLLAMA_URL=http://host.docker.internal:11434 - 如何清除Weaviate嵌入式存储?
删除目录 rm ~/.local/share/weaviate - 如何指定端口?
您可以使用端口和主机标志 verba start --port 9000 -host 0.0.0.0