ドキュメントとチャットするための、オープンソースのクリーンでカスタマイズ可能な RAG UI。エンドユーザーと開発者の両方を念頭に置いて構築されています。
ライブデモ |オンラインインストール |ユーザーガイド |開発者ガイド |フィードバック |接触
このプロジェクトは、ドキュメントに対して QA を実行したいエンド ユーザーと、独自の RAG パイプラインを構築したい開発者の両方にとって、機能的な RAG UI として機能します。
+------------------------------------------------ -------------------------+|エンドユーザー:「kotaemon」で構築されたアプリを使用するユーザー。 || (上記のデモのようなアプリを使用します) || +------------------------------------------------ ---------------+ || |開発者:kotaemonでビルドした人。 | || | (プロジェクトのどこかに「import kotaemon」があります) | || | +------------------------------------------------ ---+ | || | |投稿者: コタえもんをより良くする人たち。 | | || | | (このリポジトリに PR を作成します) | | || | +------------------------------------------------ ---+ | || +------------------------------------------------ ---------------+ |+---------------------------- --------------------------------------+
クリーンでミニマルな UI : RAG ベースの QA 用のユーザーフレンドリーなインターフェイス。
さまざまな LLM のサポート: LLM API プロバイダー (OpenAI、AzureOpenAI、Cohere など) およびローカル LLM ( ollama
およびllama-cpp-python
経由) と互換性があります。
簡単なインストール: シンプルなスクリプトですぐに開始できます。
RAG パイプラインのフレームワーク: 独自の RAG ベースのドキュメント QA パイプラインを構築するツール。
カスタマイズ可能な UI : Gradio で構築された提供された UI を使用して、RAG パイプラインの動作を確認します。
Gradio テーマ: 開発に Gradio を使用している場合は、ここでテーマを確認してください: kotaemon-gradio-theme。
独自のドキュメント QA (RAG) Web-UI をホスト: マルチユーザー ログインをサポートし、プライベート/パブリック コレクションでファイルを整理し、お気に入りのチャットを他のユーザーと共同作業および共有します。
LLM と埋め込みモデルを整理する: ローカル LLM と一般的な API プロバイダー (OpenAI、Azure、Ollama、Groq) の両方をサポートします。
ハイブリッド RAG パイプライン: ハイブリッド (フルテキストおよびベクター) 取得機能と再ランキング機能を備えた健全なデフォルトの RAG パイプラインで、最高の取得品質を保証します。
マルチモーダル QA サポート: 図や表のサポートにより、複数のドキュメントに対して質問応答を実行します。マルチモーダルドキュメント解析をサポートします (UI で選択可能なオプション)。
文書プレビューによる高度な引用: デフォルトでは、システムは LLM 回答の正確性を保証するために詳細な引用を提供します。ブラウザ内の PDF ビューアで、ハイライト付きの引用 (関連スコアを含む) を直接表示します。検索パイプラインが関連性の低い記事を返した場合の警告。
複雑な推論方法のサポート: 質問分解を使用して、複雑な/マルチホップの質問に答えます。 ReAct
、 ReWOO
、およびその他のエージェントを使用して、エージェントベースの推論をサポートします。
構成可能な設定 UI : 取得および生成プロセスの最も重要な側面を UI (プロンプトを含む) で調整できます。
拡張可能: Gradio 上に構築されているため、好みに合わせて UI 要素を自由にカスタマイズまたは追加できます。また、ドキュメントのインデックス作成と検索のための複数の戦略をサポートすることも目指しています。 GraphRAG
インデックス パイプラインは例として提供されています。
開発者ではなく、アプリを使用したいだけの場合は、わかりやすいユーザー ガイドをご覧ください。最新の機能とバグ修正をすべて入手するには、最新リリースから
.zip
ファイルをダウンロードします。
Python >= 3.10
Docker: Docker を使用してインストールする場合はオプション
.pdf
、 .html
、 .mhtml
、および.xlsx
ドキュメント以外のファイルを処理する場合は、非構造化。インストール手順はオペレーティング システムによって異なります。リンクにアクセスし、そこに記載されている指示に従ってください。
Docker イメージのlite
とfull
バージョンの両方をサポートしています。 full
使用すると、 unstructured
の追加パッケージもインストールされ、追加のファイル タイプ ( .doc
、 .docx
など) をサポートできますが、コストは Docker イメージのサイズが大きくなります。ほとんどのユーザーにとって、ほとんどの場合、 lite
イメージは適切に機能するはずです。
lite
版を使用するには。
ドッカーラン -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/シナモン/コタモン:main-lite
full
バージョンを使用するには。
ドッカーラン -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/シナモン/コタエモン:main-full
現在、 linux/amd64
とlinux/arm64
(新しい Mac 用) の 2 つのプラットフォームをサポートし、テストしています。 docker run
コマンドで--platform
渡すことでプラットフォームを指定できます。例えば:
# プラットフォーム linux/arm64docker run で docker を実行するには -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm --プラットフォーム Linux/arm64 ghcr.io/シナモン/コタモン:main-lite
すべてが正しく設定されたら、 http://localhost:7860/
にアクセスして WebUI にアクセスできます。
Docker イメージの保存には GHCR を使用します。すべてのイメージはここにあります。
必要なパッケージを複製して、新しい Python 環境にインストールします。
# オプション (セットアップ環境)conda create -n kotaemon python=3.10 conda activate kotaemon# clone this repogit clone https://github.com/Cinnamon/kotaemoncd kotaemon pip install -e "libs/kotaemon[all]"pip install -e "libs/ktem"
このプロジェクトのルートに.env
ファイルを作成します。 .env.example
テンプレートとして使用する
.env
ファイルは、ユーザーがアプリを起動する前にモデルを事前設定したいユースケース (HF ハブにアプリをデプロイするなど) に対応するためにあります。このファイルは、最初の実行時に 1 回データベースにデータを設定するためにのみ使用され、それ以降の実行では使用されません。
(オプション) ブラウザ内PDF_JS
ビューアを有効にするには、PDF_JS_DIST をダウンロードして、 libs/ktem/ktem/assets/prebuilt
に抽出します。
Web サーバーを起動します。
Python app.py
アプリはブラウザで自動的に起動します。
デフォルトのユーザー名とパスワードは両方ともadmin
です。 UI から直接追加のユーザーを設定できます。
Resources
タブとLLMs and Embeddings
を確認し、 api_key
値が.env
ファイルから正しく設定されていることを確認します。設定されていない場合は、そこで設定できます。
注記
公式の MS GraphRAG インデックス作成は、OpenAI または Ollama API でのみ機能します。 Kotaemon と直接統合するには、ほとんどのユーザーに NanoGraphRAG 実装を使用することをお勧めします。
nano-GraphRAG をインストールします: pip install nano-graphrag
nano-graphrag
インストールするとバージョンの競合が発生する可能性があります。この問題を参照してください。
すぐに修正するには: pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
環境変数USE_NANO_GRAPHRAG=true
で Kotaemon を起動します。
Resources 設定でデフォルトの LLM と埋め込みモデルを設定すると、NanoGraphRAG から自動的に認識されます。
Docker 以外のインストール: Docker を使用していない場合は、次のコマンドを使用して GraphRAG をインストールします。
pip インストール グラフラグフューチャー
API KEY の設定: GraphRAG 取得機能を使用するには、必ずGRAPHRAG_API_KEY
環境変数を設定してください。これは、環境内で直接行うことも、 .env
ファイルに追加することによっても行うことができます。
ローカル モデルとカスタム設定の使用: ローカル モデル ( Ollama
など) で GraphRAG を使用する場合、またはデフォルトの LLM およびその他の構成をカスタマイズする場合は、 USE_CUSTOMIZED_GRAPHRAG_SETTING
環境変数を true に設定します。次に、 settings.yaml.example
ファイルの設定を調整します。
「ローカル モデルのセットアップ」を参照してください。
デフォルトでは、すべてのアプリケーション データは./ktem_app_data
フォルダーに保存されます。このフォルダーをバックアップまたはコピーして、インストールを新しいマシンに転送できます。
上級ユーザーまたは特定の使用例の場合は、次のファイルをカスタマイズできます。
flowsettings.py
.env
flowsettings.py
このファイルにはアプリケーションの構成が含まれています。ここの例を開始点として使用できます。
# 好みのドキュメント ストアを設定します (全文検索機能付き)KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)# 好みのベクトルストアを設定します (ベクトルベースの検索用)KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Qdrant)# 有効/無効multimodal QAKH_REASONINGS_USE_MULTIMODAL=True# 新しい推論パイプラインを設定するか、既存の推論パイプラインを変更します。KH_REASONINGS = ["ktem.reasoning.simple.FullQAPipeline","ktem.reasoning.simple.FullDecomposeQAPipeline","ktem.reasoning.react.ReactAgentPipeline","ktem .reasoning.rewoo.RewooAgentPipeline", 】
.env
このファイルは、モデルと資格情報を構成する別の方法を提供します。
あるいは、LLM への接続に必要な情報を含む.env
ファイルを介してモデルを構成することもできます。このファイルはアプリケーションのフォルダーにあります。表示されない場合は作成できます。
現在、次のプロバイダーがサポートされています。
ollama
OpenAI 互換サーバーの使用:
llama-cpp-python
でのGGUF
の使用
Hugging Face Hub からローカルで実行する LLM を検索してダウンロードできます。現在、次のモデル形式がサポートされています。
ollamをインストールしてアプリケーションを起動します。
たとえば、モデルをプルします。
オラマ プル ラマ3.1:8b オラマプル nomic-embed-text
Web UI でモデル名を設定し、それをデフォルトにします。
GGUF
サイズがデバイスのメモリより小さいモデルを選択し、約 2 GB を残す必要があります。たとえば、合計 16 GB の RAM があり、そのうち 12 GB が使用可能な場合は、最大 10 GB の RAM を占有するモデルを選択する必要があります。モデルが大きいほど、より良い生成が可能になりますが、処理時間も長くかかる傾向があります。
以下に、いくつかの推奨事項とメモリ内のサイズを示します。
Qwen1.5-1.8B-Chat-GGUF:約2GB
指定されたモデル名で新しい LlamaCpp モデルを Web UI に追加します。
OpenAI
OpenAI のモデルへのアクセスを有効にするために、 .env
ファイルでOPENAI_API_KEY
変数に OpenAI API キーを設定します。変更できる変数は他にもあります。ケースに合わせて自由に編集してください。それ以外の場合は、ほとんどの人にとってデフォルトのパラメータが機能するはずです。
OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=<ここに OpenAI API キー>OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=テキスト埋め込み-ADA-002
Azure OpenAI
Azure プラットフォーム経由の OpenAI モデルの場合、Azure エンドポイントと API キーを提供する必要があります。 Azure 開発の設定方法に応じて、チャット モデルと埋め込みモデルの開発名を指定する必要がある場合もあります。
AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-プレビュー AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-turbo AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=テキスト埋め込み-ADA-002
ローカルモデル
ここでデフォルトのパイプライン実装を確認してください。デフォルトの QA パイプラインの動作を簡単に調整できます。
新しい.py
実装をlibs/ktem/ktem/reasoning/
に追加し、後でそれをflowssettings
に含めて UI で有効にします。
libs/ktem/ktem/index/file/graph
のサンプル実装を確認します。
(さらなる指示は準備中)。
私たちのプロジェクトは現在積極的に開発されているため、皆様からのフィードバックや貢献を非常に高く評価しています。開始するには、貢献ガイドを参照してください。貢献者の皆様、ありがとうございました!