ITADN
weaviate/Verba
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Verba

[!IMPORTANT]

⚠️ 项目已停止维护 — 仓库已归档

Verba 不再处于活跃开发状态。 此仓库已归档,将不再接收进一步的更新、错误修复、安全补丁或新功能。Pull requests 和 issues 将不再被审查或合并。

代码仍可供参考和 fork,但按原样提供,不保证稳定性、兼容性或支持。现有部署将继续运行,但用户不应期望持续维护。

感谢所有在 Verba 发展历程中做出贡献、使用和支持它的人。 ❤️


黄金 RAGtriever - 社区版 ✨

Weaviate PyPi downloads Docker support

注意: 以下内容描述的是 Verba 在停止维护之前的状态。它仅出于历史和参考目的而保留。请参阅上方关于该项目当前状态的通知。

欢迎使用 Verba:黄金 RAGtriever,一个由社区驱动的开源应用程序,旨在开箱即用地为检索增强生成(RAG)提供端到端、精简且用户友好的界面。只需几个简单的步骤,即可轻松探索您的数据集并提取见解,您可以选择在本地使用 Ollama 和 Huggingface,或通过 Anthropic、Cohere 和 OpenAI 等 LLM 提供商。该项目是为社区构建并服务于社区的,请注意,它可能不会像其他 Weaviate 生产应用程序那样以同样的紧迫性进行维护。欢迎为该项目做出贡献,帮助我们让 Verba 变得更好! <3

pip install goldenverba

Demo of Verba

什么是 Verba?

Verba 是一个完全可定制的个人助理,利用 检索增强生成 (RAG) 来查询和交互您的数据,支持本地运行或通过云端部署。解决围绕您文档的问题,交叉引用多个数据点,或从现有知识库中获取洞察。Verba 将最先进的 RAG 技术与 Weaviate 的上下文感知数据库相结合。根据您的具体用例,选择不同的 RAG 框架、数据类型、分块与检索技术以及 LLM 提供商。

开源精神

⚠️ 更新: Verba 已停止维护,仓库已归档。以下文本反映该项目之前的状态,仅保留作为历史背景参考——不再接受问题和拉取请求。

Weaviate 很自豪地向社区提供这个开源项目。虽然我们力求尽快解决问题,但请理解,它可能不会像生产软件那样得到同等严格的维护。我们欢迎并鼓励社区贡献,以帮助其平稳运行。非常感谢您在快速修复未解决问题方面给予的支持。

在此观看我们最新的 Verba 视频:

VIDEO LINK

功能列表

🤖 模型支持已实现描述
Ollama (e.g. Llama3)由 Ollama 驱动的本地嵌入和生成模型
HuggingFace (e.g. MiniLMEmbedder)由 HuggingFace 驱动的本地嵌入模型
Cohere (e.g. Command R+)由 Cohere 提供的嵌入和生成模型
Anthrophic (e.g. Claude Sonnet)由 Anthrophic 提供的嵌入和生成模型
OpenAI (e.g. GPT4)由 OpenAI 提供的嵌入和生成模型
Groq (e.g. Llama3)由 Groq 提供的生成模型 (LPU 推理)
Novita AI (e.g. Llama3.3)由 Novita AI 提供的生成模型
Upstage (e.g. 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 管道的接口
Agentic RAG超出范围 ❌Agentic RAG 管道
Graph RAG超出范围 ❌基于图的 RAG 管道
🗡️ 分块技术已实现描述
Token基于 spaCy 按 Token 分块
Sentence基于 spaCy 按句子分块
Semantic按语义句子相似度进行分块和分组
Recursive基于规则递归分块数据
HTML分块 HTML 文件
Markdown分块 Markdown 文件
Code分块 Code 文件
JSON分块 JSON 文件
🆒 酷炫附加功能已实现描述
Docker 支持Verba 可通过 Docker 部署
可定制前端Verba 的前端可通过前端完全定制
向量查看器在 3D 中可视化您的数据
多用户协作超出范围 ❌Verba 中的多用户协作
🤝 RAG 库已实现描述
LangChain实现 LangChain RAG 流水线
Haystack计划中 ⏱️实现 Haystack RAG 流水线
LlamaIndex计划中 ⏱️实现 LlamaIndex RAG 流水线

缺少某些功能?欢迎创建新的 issue 或 discussion 分享您的想法!

Showcase of Verba


开始使用 Verba

Verba 有三种部署选项:

  • 通过 pip 安装
pip install goldenverba
  • 从源码构建
git clone https://github.com/weaviate/Verba

pip install -e .
  • 使用 Docker 进行部署

先决条件:如果你没有使用 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 教程指南

API 密钥和环境变量

您可以在 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 Token | 通过 GitHub 获取数据摄取访问权限 | | GITLAB_TOKEN | 您的 GitLab Token | 通过 GitLab 获取数据摄取访问权限 | | FIRECRAWL_API_KEY | 您的 Firecrawl API Key | 通过 Firecrawl 获取数据摄取访问权限 | | VOYAGE_API_KEY | 您的 VoyageAI API Key | 通过 VoyageAI 获取嵌入模型访问权限 | | EMBEDDING_SERVICE_URL | 您的嵌入服务实例 URL | 通过 Weaviate Embedding Service 获取嵌入模型访问权限 | | EMBEDDING_SERVICE_KEY | 您的嵌入服务密钥 | 通过 Weaviate Embedding Service 获取嵌入模型访问权限 |

| UPSTAGE_API_KEY | 您的 Upstage API Key | 获取 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 嵌入模型 |

API Keys in Verba

Weaviate

Verba 提供了根据您的需求连接 Weaviate 实例的灵活性。您有三种选择:

  1. 本地部署:使用 Weaviate Embedded,它在您的设备上本地运行(Windows 除外,请选择 Docker/云部署)
  2. Docker 部署:当您运行 Verba 的 Dockerfile 时,请选择此选项。
  3. 云部署:使用托管在 WCD 上的现有 Weaviate 实例来运行 Verba

💻 Weaviate Embedded Embedded Weaviate 是一种部署模式,它从您的应用程序代码中运行 Weaviate 实例,而不是从独立的 Weaviate 服务器安装中运行。当您在 Local Deployment 中运行 Verba 时,它将在后台设置并管理 Embedded Weaviate。请注意,Weaviate Embedded 不支持 Windows,并且处于实验模式,可能会带来意外错误。我们建议改用 Docker 部署或云部署。您可以在此处阅读有关 Weaviate Embedded 的更多信息 here

🌩️ Weaviate 云部署 (WCD)

如果您更喜欢基于云的解决方案,Weaviate Cloud (WCD) 提供了一个可扩展的托管环境。请按照 Weaviate Cluster Setup Guide 了解如何设置云集群并获取 API 密钥。

🐳 Docker 部署 另一种本地替代方案是使用 Docker 部署 Weaviate。有关更多详细信息,请遵循 How to install Verba with Docker 部分。

Deployment in Verba

⚙️ 自定义 Weaviate 部署

如果您自行托管 Weaviate,可以使用 Verba 中的 Custom 部署选项。这将允许您指定 Weaviate 实例的 URL、PORT 和 API key。

Ollama

Verba 支持 Ollama 模型。请在您的设备上下载并安装 Ollama(https://ollama.com/download)。请确保使用 ollama run <model> 安装您首选的 LLM。

已在 llama3llama3:70bmistral 上测试。较大的模型通常表现更好,但需要更多的计算能力。

请确保 Ollama Server 在后台运行,并且不要使用不同的 ollama 模型摄取文档,因为它们的向量维度可能不同,这会导致错误

您可以通过运行以下命令来验证

ollama run llama3

Unstructured

Verba 支持通过 Unstructured IO 导入文档(例如纯文本、.pdf、.csv 等)。要使用它们,您需要 UNSTRUCTURED_API_KEYUNSTRUCTURED_API_URL 环境变量。您可以从 Unstructured 获取

UNSTRUCTURED_API_URL 默认设置为 https://api.unstructuredapp.io/general/v0/general

AssemblyAI

Verba 支持通过 AssemblyAI 导入文档(音频文件或视频文件中的音频)。要使用它们,您需要 ASSEMBLYAI_API_KEY 环境变量。您可以从 AssemblyAI 获取

OpenAI

Verba 支持 OpenAI 模型,例如 Ada、GPT3 和 GPT4。要使用它们,您需要指定 OPENAI_API_KEY 环境变量。您可以从 OpenAI 获取

您还可以添加一个 OPENAI_BASE_URL 以使用诸如 LiteLLM (https://github.com/BerriAI/litellm) 之类的代理

OPENAI_BASE_URL=YOUR-OPENAI_BASE_URL

OpenAI Embeddings

若要为嵌入指定不同的端点,请设置 OPENAI_EMBED_API_KEYOPENAI_EMBED_BASE_URL 环境变量。

如果你使用自定义 OpenAI Server 进行嵌入,请确保设置 OPENAI_CUSTOM_EMBED=true。这将使 Verba 能够识别自定义嵌入模型名称,而非默认的 OpenAI 嵌入模型名称。

HuggingFace

如果你想使用 HuggingFace 功能,请确保安装正确的 Verba 包。它将安装使用本地嵌入模型所需的包。 请注意,在启动时,Verba 会在使用时自动下载并安装嵌入模型。

pip install goldenverba[huggingface]

or

pip install `.[huggingface]`

如果你正在使用 Docker,请相应地修改 Dockerfile。目前,如果你从 Docker Hub 拉取 Docker 镜像,则无法安装自定义的 Verba 安装版本,你需要从源代码安装 Docker 部署,并事先修改 Dockerfile

Groq

要将 Groq LPU 用作生成引擎,你需要从 Groq 获取 API 密钥。

虽然你可以在 Verba 启动后通过图形界面提供该密钥,但建议你在启动应用程序之前将其指定为 GROQ_API_KEY 环境变量。
这将允许你在最新的可用模型列表中选择生成模型。

Novita

要将 Novita AI 用作生成引擎,你需要从 Novita AI 获取 API 密钥。

如何使用 pip 部署

Python >=3.10.0

  1. (非常重要) 初始化一个新的 Python 环境
python3 -m virtualenv venv
source venv/bin/activate
  1. 安装 Verba
pip install goldenverba
  1. 启动 Verba
verba start

你可以通过标志指定 --port 和 --host

  1. 访问 Verba
Visit localhost:8000
  1. (可选)创建 .env 文件并添加环境变量

如何从源代码构建

  1. 克隆 Verba 仓库
git clone https://github.com/weaviate/Verba.git
  1. 初始化一个新的 Python 环境
python3 -m virtualenv venv
source venv/bin/activate
  1. 安装 Verba
pip install -e .
  1. 启动 Verba
verba start

你可以通过标志指定 --port 和 --host

  1. 访问 Verba
Visit localhost:8000
  1. (可选)创建 .env 文件并添加环境变量

如何使用 Docker 安装 Verba

Docker 是一组使用操作系统级虚拟化技术以称为容器的软件包形式交付软件的即服务产品。若要开始使用 Docker 部署 Verba,请遵循以下步骤。如果您需要有关 Docker 用法的更详细说明,请参阅 Docker Curriculum

您可以使用 docker pull semitechnologies/verba 拉取最新的 Verba Docker 镜像。请注意,直接从 Docker Hub 拉取时,您只能安装不包含诸如 HuggingFace 等软件包的原始 Verba 版本。如果您想使用 Docker 和 HuggingFace,请遵循以下步骤。

若要自行构建镜像,您可以克隆 Verba 仓库,并在 Verba 目录中运行 docker build -t verba .

  1. 克隆 Verba 仓库 确保您的系统上已安装 Git。然后,打开终端或命令提示符,并运行以下命令以克隆 Verba 仓库:
git clone https://github.com/weaviate/Verba.git
  1. 设置必要的环境变量 确保在 .env 文件中设置所需的环境变量。您可以在 API Keys Section 中阅读有关如何设置它们的更多信息

  2. 调整 docker-compose 文件 你可以使用 docker-compose.ymlverba 服务下添加所需的环境变量,也可以调整 Weaviate Docker 设置以启用 Authentification 或更改数据库实例的其他设置。你可以在我们的 docker-compose 文档 中阅读有关 Weaviate 配置的更多信息。你还可以取消注释 ollama 服务,以便在同一个 docker compose 中使用 Ollama。

请确保只添加您真正需要的环境变量。

  1. 使用 Docker 部署 在已安装 Docker 并克隆 Verba 仓库后,在终端或命令提示符中导航到包含 Docker Compose 文件的目录。运行以下命令以分离模式启动 Verba 应用程序,使其能够在后台运行:

docker compose up -d

docker compose --env-file goldenverba/.env up -d --build

此命令将下载必要的 Docker 镜像,创建容器并启动 Verba。 请记住,要使用此方法,您的系统必须已安装 Docker。有关安装说明和 Docker 的更多详细信息,请访问 Docker 官方文档。

  1. 访问 Verba
  • 您可以在 localhost:8080 访问您的本地 Weaviate 实例

  • 您可以在 localhost:8000 访问 Verba 前端

如果您希望您的 Docker 实例安装特定版本的 Verba,您可以编辑 Dockerfile 并更改安装行。

RUN pip install -e '.'

Verba 操作指南

选择您的部署方式

您看到的第一屏是部署界面。在此您可以选择 LocalDockerWeaviate CloudCustom 部署。Local 部署在底层使用 Weaviate Embedded,它会在后台初始化一个 Weaviate 实例。Docker 部署使用一个运行在同一 Docker 网络内的独立 Weaviate 实例。Weaviate Cloud 部署使用托管在 Weaviate Cloud Services (WCS) 上的 Weaviate 实例。Custom 部署允许您指定自己的 Weaviate 实例 URL、PORT 和 API key。

您可以通过将 DEFAULT_DEPLOYMENT 环境变量设置为 LocalDockerWeaviateCustom 来跳过此部分。

导入您的数据

您需要做的第一件事是添加您的数据。您可以通过点击 Import Data 并选择 Add FilesAdd DirectoryAdd URL 选项卡来完成此操作。在此您可以添加所有您想要摄取的文件。 然后,您可以通过选择文件并点击 OverviewConfigure 选项卡来单独配置每个文件。 Demo of Verba

查询您的数据

数据导入后,您可以使用 Chat 页面提出任何相关问题。您将收到与您的问题在语义上相关的文本块,以及由您选择的模型生成的答案。您可以在 Config 选项卡下配置 RAG 管道。

Demo of Verba

开源贡献

我们随时欢迎您的贡献!如果您有任何想法、反馈,或者发现了任何问题,请随时提出建议、反馈,或创建 issue 和 bug 报告!在贡献之前,请阅读贡献指南。如果您需要任何帮助,请访问我们的Weaviate 社区论坛

项目架构

您可以在其技术文档前端文档中了解更多关于 Verba 的架构和实现。建议在做出任何贡献之前先查看这些文档。

已知问题

  • Weaviate Embeeded 目前在 Windows 上尚不可用
    • 将在未来版本中修复,在此之前请使用 Docker 或 WCS 部署

常见问题

  • 我可以使用我 Weaviate 实例中现有的数据吗?

    • 不,很遗憾不行。Verba 需要数据以特定格式才能工作。目前,这只能通过 Verba UI 导入数据来实现。
  • Verba 支持多语言吗?

    • 这取决于您选择的 Embedding 和 Generation 模型是否支持多语言数据。
  • 我可以在 Verba Docker 中使用我的 Ollama 服务器吗?

    • 是的,可以!请确保 URL 设置为:OLLAMA_URL=http://host.docker.internal:11434
    • 如果您在 Linux 上运行,可能需要获取 Ollama 服务器的 IP 网关:OLLAMA_URL="http://YOUR-IP-OF-OLLAMA:11434"
  • 如何清除 Weaviate Embedded 存储?

    • 您可以在这里找到存储的数据:~/.local/share/weaviate
  • 如何指定端口?

    • 您可以使用 port 和 host 标志 verba start --port 9000 --host 0.0.0.0
  • Can multiple users use Verba at the same time? How about role based access?

    • Verba 仅针对单用户场景进行设计和优化。近期没有支持多用户或基于角色的访问控制的计划。
  • Does Verba offer a API endpoint to use externally?

    • 不,目前 Verba 不提供任何可用于与应用程序交互的实用 API 端点。当前的 FastAPI 配置是为前端和后端之间的内部通信而优化的。不建议将其用作 API 端点。计划添加用户友好的
  • How to connect to your custom OpenAI Server?

    • .env 文件中设置你的自定义 OpenAI API Key 和 URL,这将允许 Verba 启动并从你的自定义 OpenAI Server 检索模型。OPENAI_BASE_URL 默认设置为 https://api.openai.com/v1
    • 你还可以通过配置 OPENAI_EMBED_API_KEYOPENAI_EMBED_BASE_URL 环境变量并设置 OPENAI_CUSTOM_EMBED=true 来为你的嵌入设置不同的端点。更多详情,请参阅 OpenAI Embeddings
  • How to upload custom JSON files to Verba?

    • 目前 Verba 不支持自定义 JSON 结构。相反,整个 JSON 将简单地转储到 Verba 文档的内容字段中。你可以在技术文档中此处阅读有关 Verba JSON 结构的更多信息。