注意: この記事は、Neo4jのブログ記事「GraphRAG Python Package: Accelerating GenAI With Knowledge Graphs」を元に、機械翻訳を利用して作成した備忘録的な内容です。正確性を確保するため、原文と照らし合わせてチェックすることをお勧めします。とくにコードのところは原文のほうを見てください。概要、構成、雰囲気を掴むために読んでください。
はじめに
Neo4jのGraphRAGパッケージは、非構造化データからナレッジグラフの作成、ナレッジグラフの検索、そして完全なGraphRAGパイプラインまでをワンストップで提供するPythonパッケージです。このツールは、知識ベースのアシスタント、検索API、チャットボット、レポートジェネレーターなどの開発に役立ちます。
GraphRAGの概要
GraphRAGは、ナレッジグラフとRetrieval-Augmented Generation (RAG)を組み合わせることで、大規模言語モデル(LLM)の幻覚などの問題を解決し、ドメイン固有のコンテキストを追加することで、従来のRAGアプローチよりも質と効果を向上させます。
GraphRAGパッケージの主な機能
- ナレッジグラフの構築
- データ検索
- GraphRAGパイプラインの実行
1. ナレッジグラフの構築
SimpleKGPipelineクラスを使用して、以下の要素を指定するだけで自動的にナレッジグラフを構築できます:
- Neo4jへの接続ドライバー
- エンティティ抽出用のLLM
- テキストチャンクのベクトル化用の埋め込みモデル
オプションで、グラフスキーマやプロンプトテンプレートも指定可能です。
from neo4j_graphrag.experimental.pipeline.kg_builder import SimpleKGPipeline
kg_builder = SimpleKGPipeline(
llm=ex_llm,
driver=neo4j_driver,
embedder=embedder,
from_pdf=True
)
await kg_builder.run_async(file_path='example.pdf')
2. データ検索
GraphRAGパッケージは、以下を含む複数の検索クラスを提供しています:
- Vector Retriever: ベクトル埋め込みを使用した類似性検索
- Vector Cypher Retriever: ベクトル検索とCypherクエリを組み合わせたグラフ走査
- Hybrid Retriever: ベクトル検索とフルテキスト検索の組み合わせ
- Text2Cypher: 自然言語クエリをCypherクエリに変換
例えば、Vector Retrieverは以下のように使用できます:
from neo4j_graphrag.retrievers import VectorRetriever
vector_retriever = VectorRetriever(
neo4j_driver,
index_name="text_embeddings",
embedder=embedder
)
results = vector_retriever.get_search_results(query_text="How is precision medicine applied to Lupus?", top_k=3)
3. GraphRAGパイプラインの実行
GraphRAGクラスを使用して、簡単にGraphRAGパイプラインをインスタンス化し実行できます。最小限の設定では、LLMと検索機能を指定するだけで済みます。
from neo4j_graphrag.generation.graphrag import GraphRAG
rag = GraphRAG(llm=llm, retriever=vector_retriever)
response = rag.search("How is precision medicine applied to Lupus?")
print(response.answer)
まとめ
GraphRAGパッケージは、ナレッジグラフを活用したGenAIアプリケーションの開発を大幅に簡素化します。非構造化データからナレッジグラフの作成、高度な検索機能、そして完全なGraphRAGパイプラインまでを提供し、Neo4jの専門知識がなくても利用可能です。
詳細なドキュメントやチュートリアルも提供されているので、GraphRAGを使った開発に興味がある方は、引用元の記事を参照ください。