Weaviateベースのオープンソース検索拡張生成(RAG)チャットボット。エンドツーエンドでスムーズかつユーザーフレンドリーなRAGソリューションを提供します。
Verbaプロジェクト詳細
プロジェクト概要
Verbaは、Weaviateが開発したオープンソースのRetrieval Augmented Generation (RAG) アプリケーションで、「The Golden RAGtriever」として知られています。これは、エンドツーエンドでスムーズかつユーザーフレンドリーなRAGソリューションを提供し、ユーザーはOllamaやHuggingfaceをローカルで使用する場合でも、Anthropic、Cohere、OpenAIなどのLLMプロバイダーを介する場合でも、簡単なステップでデータセットを探索し、インサイトを抽出できます。
コア機能
🤖 モデル対応
- ローカルモデル: 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機能
- ハイブリッド検索: セマンティック検索とキーワード検索の組み合わせ
- オートコンプリート提案: クエリ提案機能を提供
- スマートフィルタリング: ドキュメント、ドキュメントタイプなどによるフィルタリングをサポート
- カスタマイズ可能なメタデータ: メタデータ設定を完全に制御
- 非同期インジェスト: 処理速度向上のための非同期データ取り込み
🗡️ ドキュメントチャンキング技術
- トークンチャンキング: トークンベースのドキュメントチャンキング
- 文チャンキング: spaCyを使用した文レベルのチャンキング
- 段落チャンキング: 段落レベルのドキュメントチャンキングをサポート
技術アーキテクチャ
Verbaはモジュール型アーキテクチャ設計を採用しており、RAGプロセスをいくつかの独立したモジュール化されたステップに分解しています。
- ReaderManager: 文字列リスト(パス、URL、またはテキスト)を受け取り、Verbaドキュメントリストを出力します。
- ChunkerManager: ドキュメントリストを受け取り、各ドキュメントテキストをより小さなチャンクに分割します。
- 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. 環境設定
APIキーを設定するための.env
ファイルを作成します。
# 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. データインポート
- ウェブインターフェースで「Import Data」を選択します。
- ファイル、ディレクトリ、またはURLの追加をサポートします。
- 各ファイルに対して個別の設定が可能です。
3. RAGパイプラインの設定
「Config」ページで設定します。
- 埋め込みモデルを選択します。
- 生成モデルを選択します。
- チャンキング戦略を設定します。
- 検索パラメーターを設定します。
4. チャット開始
「Chat」ページで:
- 質問を入力して関連する回答を得ます。
- セマンティックに関連するドキュメントスニペットを表示します。
- AIが生成した統合的な回答を得ます。
特色機能
📊 3Dベクトル可視化
ベクトルデータの3D可視化インターフェースを提供し、ユーザーがデータ分布を理解するのに役立ちます。
🎨 カスタマイズ可能なフロントエンド
完全にカスタマイズ可能なフロントエンドインターフェースで、ブランドに合わせたカスタマイズをサポートします。
🔄 セマンティックキャッシュ
Weaviateのセマンティックキャッシュ機能を利用し、生成された応答とクエリを埋め込み、繰り返しのクエリがキャッシュ内の以前に処理されたセマンティックに同一のクエリをチェックすることで迅速に処理されるようにします。
🤝 RAGライブラリ連携
- LangChain: LangChain RAGパイプラインをサポート済み
- Haystack: サポート予定
- LlamaIndex: サポート予定
応用シーン
- 個人知識管理: 個人ドキュメントライブラリのスマートクエリシステムを構築
- 企業ドキュメント検索: 従業員が関連する企業ドキュメントや情報を迅速に見つけるのを支援
- 研究支援: 研究者が研究資料を分析・検索するのを支援
- カスタマーサービス: 企業知識ベースに基づくスマートカスタマーサービスシステムを構築
- 教育・研修: インタラクティブな学習資料クエリシステムを作成
プロジェクト状態
このプロジェクトはコミュニティ主導であり、Weaviateがオープンソースサポートを提供しています。チームは迅速な問題解決に努めていますが、メンテナンスの優先度は商用ソフトウェアほど高くない場合があります。プロジェクトの安定稼働を支援するためのコミュニティからの貢献を歓迎します。
技術要件
- Pythonバージョン: >=3.10.0, <3.13.0
- OS: Linux、macOS(Windows上のWeaviate Embeddedは現在サポートされていません)
- ハードウェア: 選択するモデルとデータ量によって異なります
オープンソース貢献
プロジェクトは様々な形式の貢献を歓迎します。
- 機能改善とバグ修正
- ドキュメントの充実
- 新機能の提案
- テストとフィードバック
詳細については、プロジェクトの貢献ガイドラインおよび技術ドキュメントを参照してください。
将来の展望
プロジェクトロードマップによると、計画されている機能には以下が含まれます。
- 高度なクエリ機能(LLM評価に基づくタスク委任)
- リランキング機能(コンテキストに基づく結果のリランキング)
- RAG評価インターフェース
- RAGライブラリとのさらなる連携
VerbaはRAG技術のベストプラクティスを体現しており、ユーザーに強力で使いやすいスマートドキュメントクエリソリューションを提供します。