非構造化データからナレッジ グラフを作成する
このアプリケーションは、非構造化データ (PDF、ドキュメント、テキスト、YouTube ビデオ、Web ページなど) を Neo4j に保存されたナレッジ グラフに変換するように設計されています。大規模言語モデル (OpenAI、Gemini など) の機能を利用して、テキストからノード、関係、およびそれらのプロパティを抽出し、Langchain フレームワークを使用して構造化されたナレッジ グラフを作成します。
ローカル マシン、GCS または S3 バケット、または Web ソースからファイルをアップロードし、LLM モデルを選択してナレッジ グラフを生成します。
Gemini では追加の GCP 構成が必要なため、デフォルトでは OpenAI と Diffbot のみが有効になっています。環境に応じて、VITE_LLM_MODELS_PROD 変数で示されるモデルを構成しています。必要に応じてモデルを構成できます。元:
VITE_LLM_MODELS_PROD = " openai_gpt_4o,openai_gpt_4o_mini,diffbot,gemini_1.5_flash "
ルート フォルダーに、OPENAI キーと DIFFBOT キー (両方を使用する場合) を含む .env ファイルを作成します。
OPENAI_API_KEY = " your-openai-key "
DIFFBOT_API_KEY = " your-diffbot-key "
OpenAI のみが必要な場合:
VITE_LLM_MODELS_PROD = " diffbot,openai-gpt-3.5,openai-gpt-4o "
OPENAI_API_KEY = " your-openai-key "
Diffbot のみが必要な場合:
VITE_LLM_MODELS_PROD = " diffbot "
DIFFBOT_API_KEY = " your-diffbot-key "
その後、Docker Compose を実行して、すべてのコンポーネントをビルドして開始できます。
docker-compose up --build
デフォルトでは、入力ソースはローカル ファイル、Youtube、Wikipedia、AWS S3、および Web ページになります。このデフォルト設定が適用されると、次のようになります。
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,web "
ただし、Google GCS 統合が必要な場合は、 gcs
と Google クライアント ID を追加します。
VITE_REACT_APP_SOURCES = " local,youtube,wiki,s3,gcs,web "
VITE_GOOGLE_CLIENT_ID = " xxxx "
もちろん、すべて (ローカル、youtube、wikipedia、s3、gcs) を結合したり、不要または不要なものを削除したりすることもできます。
デフォルトでは、vector、graph_vector、graph、fulltext、graph_vector_fulltext、entity_vector、global_vector のすべてのチャット モードが利用可能になります。チャット モード変数にどのモードも指定されていない場合は、すべてのモードが使用可能になります。
VITE_CHAT_MODES = " "
ただし、ベクトル モードのみまたはグラフ モードのみを指定したい場合は、env でモードを指定することでそれを行うことができます。
VITE_CHAT_MODES = " vector,graph "
あるいは、バックエンドとフロントエンドを別々に実行することもできます。
cd frontend
yarn
yarn run dev
cd backend
python -m venv envName
source envName/bin/activate
pip install -r requirements.txt
uvicorn score:app --reload
Google Cloud Platform にアプリとパッケージをデプロイするには、Google Cloud Run で次のコマンドを実行します。
# Frontend deploy
gcloud run deploy dev-frontend --set-env-vars " VITE_BACKEND_API_URL= " --set-env-vars " VITE_FRONTEND_HOSTNAME=hostname.us-central1.run.app " --set-env-vars " VITE_SEGMENT_API_URL=https://cdn.segment.com/v1/projects/4SGwdwzuDm5WkFvQtz7D6ATQlo14yjmW/settings "
source location current directory > Frontend
region : 32 [us-central 1]
Allow unauthenticated request : Yes
# Backend deploy
gcloud run deploy --set-env-vars " OPENAI_API_KEY = " --set-env-vars " DIFFBOT_API_KEY = " --set-env-vars " NEO4J_URI = " --set-env-vars " NEO4J_PASSWORD = " --set-env-vars " NEO4J_USERNAME = "
source location current directory > Backend
region : 32 [us-central 1]
Allow unauthenticated request : Yes
環境変数名 | 必須/任意 | デフォルト値 | 説明 |
---|---|---|---|
EMBEDDING_MODEL | オプション | all-MiniLM-L6-v2 | テキスト埋め込みを生成するためのモデル (all-MiniLM-L6-v2 、 openai 、 vertexai) |
IS_EMBEDDING | オプション | 真実 | テキストの埋め込みを有効にするフラグ |
KNN_MIN_SCORE | オプション | 0.94 | KNN アルゴリズムの最小スコア |
GEMINI_ENABLED | オプション | 間違い | Gemini を有効にするフラグ |
GCP_LOG_METRICS_ENABLED | オプション | 間違い | Google Cloud ログを有効にするフラグ |
NUMBER_OF_CHUNKS_TO_COMBINE | オプション | 5 | 埋め込みを処理するときに結合するチャンクの数 |
UPDATE_GRAPH_CHUNKS_PROCESSED | オプション | 20 | 進行状況を更新する前に処理されたチャンクの数 |
NEO4J_URI | オプション | neo4j://データベース:7687 | Neo4j データベースの URI |
NEO4J_USERNAME | オプション | neo4j | Neo4j データベースのユーザー名 |
NEO4J_パスワード | オプション | パスワード | Neo4j データベースのパスワード |
LANGCHAIN_API_KEY | オプション | ラングチェーンのAPIキー | |
LANGCHAIN_PROJECT | オプション | ラングチェーンのプロジェクト | |
LANGCHAIN_TRACING_V2 | オプション | 真実 | Langchain トレースを有効にするフラグ |
LANGCHAIN_ENDPOINT | オプション | https://api.smith.langchain.com | Langchain API のエンドポイント |
VITE_BACKEND_API_URL | オプション | http://ローカルホスト:8000 | バックエンドAPIのURL |
VITE_BLOOM_URL | オプション | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | ブルーム視覚化の URL |
VITE_REACT_APP_SOURCES | 必須 | ローカル、youtube、wiki、s3 | 利用可能な入力ソースのリスト |
VITE_CHAT_MODES | 必須 | ベクトル、グラフ+ベクトル、グラフ、ハイブリッド | Q&Aに利用できるチャットモード |
VITE_ENV | 必須 | 開発または製品 | アプリの環境変数 |
VITE_TIME_PER_PAGE | オプション | 50 | ページあたりの処理時間 |
VITE_CHUNK_SIZE | オプション | 5242880 | アップロードするファイルの各チャンクのサイズ |
VITE_GOOGLE_CLIENT_ID | オプション | Google認証用のクライアントID | |
VITE_LLM_MODELS_PROD | オプション | openai_gpt_4o、openai_gpt_4o_mini、diffbot、gemini_1.5_flash | 環境の PROD または DEV に基づいてモデルを区別するには |
GCS_FILE_CACHE | オプション | 間違い | True に設定すると、処理するファイルが GCS に保存されます。 False に設定すると、ファイルがローカルに保存されます。 |
ENTITY_EMBEDDING | オプション | 間違い | True に設定すると、データベース内の各エンティティの埋め込みが追加されます |
LLM_MODEL_CONFIG_ollama_<モデル名> | オプション | ollam 構成をローカル デプロイメントの場合、model_name,model_local_url として設定します。 | |
RAGAS_EMBEDDING_MODEL | オプション | オープンナイ | ragas 評価フレームワークで使用される埋め込みモデル |
docker pull ollama/ollama
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run llama3
LLM_MODEL_CONFIG_ollama_
# example
LLM_MODEL_CONFIG_ollama_llama3 = ${LLM_MODEL_CONFIG_ollama_llama3-llama3,
http : //host.docker.internal:11434}
VITE_BACKEND_API_URL = ${ VITE_BACKEND_API_URL-backendurl }
LLM ナレッジ グラフ ビルダー アプリケーション
Neo4j ワークスペース
アプリケーションのデモ
ご質問やサポートがございましたら、お気軽に Github Issue を提起してください