基於 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 暫不支援)
  • 硬體: 根據選擇的模型和資料量而定

開源貢獻

專案歡迎各種形式的貢獻:

  • 功能改進和錯誤修復
  • 文件完善
  • 新功能建議
  • 測試和回饋

詳細資訊請參考專案的貢獻指南技術文件

未來發展

根據專案路線圖,計劃中的功能包括:

  • 進階查詢功能(基於 LLM 評估的任務委託)
  • 重排序功能(基於上下文的結果重排序)
  • RAG 評估介面
  • 更多 RAG 函式庫整合

Verba 代表了 RAG 技術的最佳實踐實現,為使用者提供了一個功能強大、易於使用的智慧文件查詢解決方案。

Star History Chart