「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ステージ †
Loading †
テキストデータを読み込む
Indexing †
テキストデータからインデックスを作成する。
Storing †
テキストデータとインデックスを永続化する。
Querying †
インデックスを使用してテキストデータを検索する。
Evaluation †
検索のリクエストレスポンスを客観的に評価。
機能 †
データの取得 †
生のテキストデータだけでなく、
- ファイル (PDF、ePub、Word、PowerPoint?、Audioなど) や
- Webサービス (Notion、Slack、Wikipediaなど) を
データソースとして利用できる。
インデックスの作成 †
- Keyword検索、Vector検索:テキストデータのチャンクをベクトルに変換する。
- Keyword検索
- Vector検索
- VectorStoreIndex?
- SummaryIndex?
- 以下のインデックスは他のプロバイダにoff-road
- 全文検索:フルテキスト・インデックスを作成する。
- Graph検索:テキストデータのチャンクからノードとエッジを抽出する。
データのストア †
Vector Store、Document Store、Index Storeなどのストアにデータを保存。
- Vector Store
- Document Store
- Index Store
データの検索 †
インデックスを使用してデータを検索
- Keyword検索:キーワードを使用し、文書ベクトルを検索し結果を得る。
- Vector検索:クエリもベクトルに変換し、文書ベクトルと比較して結果を得る。
- Graph検索:GraphDBを全文検索後、ノードとエッジから関連文書を検索し結果を得る。
プロバイダ †
1st Party †
各ステージを処理する基本的なライブラリ
3rd Party †
各ステージを処理するライブラリ
- データ取得:LlamaHub?に様々なデータコネクタが提供されている。
- ベクトル化、ストア
- NoSQLデータベース:MongoDBやElasticsearchなどのNoSQLデータベースを使用してデータを保存および検索できる。
- クラウドストレージ: AWS S3やCloudflare R2などのクラウドストレージサービスを利用してデータを保存できる。
- Vectorストア: DeepLake?やFAISSなどを使用して、効率的なベクトル化、ベクトル検索を実現する。
詳細 †
斯々然々で公式を読む事をオススメする。
主要機能 †
Loading †
- Reader
- SimpleDirectoryReader?と言う汎用的なライブラリを利用できる他、
- Readerを使用する代わりに、ドキュメントを直接使用することもできる。
- また、数百のデータ コネクタをLlamaHub?レジストリをダウンロードして使用できる。
- LlamaCloud?のコネクタは、LlamaIndex純正IaaSストレージということだろう。
- ストレージによっては、インデックス化処理がオフロードされているものもあり、その場合、Indexingのプロセスは不要になる。
- node_parser
- API的には、Indexingと同じタイミングで実行されるが、
- 概念的には、Loading、Readerの後に実行されるもの。
- SplitterでChunkに分割する(APIはNodeを返す)。
- Splitterのインスタンスがnode_parserらしい。
- node_parserの単独実行も可能で、show_progressと言ったオプションもある。
- パイプライン(IngestionPipeline?)に組み込んで、複雑なパースを実装することもできる。
- IngestionPipeline?()には、Splitter、Extractor、Embeddingなどを指定できる模様。
Indexing †
- VectorStoreIndex?
- テキストの意味またはセマンティクスをベクトル化、数学的関係(≒内積計算)により、ランキングが可能になる。
- また、検索性能を上げるために、近似最近傍探索(ANN)、次元削減、クラスタリングと事前フィルタリングなどがある。
- 引数には、documentsやnodesを指定可能で、show_progressと言ったオプションもある。
- SummaryIndex?
- テキストを要約し、メタデータを付与することで、検索+ランキングが可能になる。
- 検索+ランキングには、付与したメタデータを活用する。
- KnowledgeGraphIndex?
- GraphRAG のIndexing処理を行う。
- Graphでは、Indexingの段階で、LLMを使用する(処理内容は様々)。
Storing †
Document Store、Vector Store、Index Storeに、Storage Contextを設定する。
- Document Store:既出の、Loadingの所で、Document Storeから読み出している。
- Indexingで、Vector Store と Index Storeに書き出し(永続化し)ている。
- 通常、DBにストア機能とサーチ機能が実装されているので、
Vector Store、Index Storeには同じDBのStorage Contextを設定する。
インデックス | 特性 | 適合する NoSQL |
VectorStoreIndex? | ベクトルデータ管理 | ANN Pinecone, Weaviate, Milvus, Qdrant, Redis |
SummaryIndex? | 文書型データ、メタデータ管理 | MongoDB, Elasticsearch, DynamoDB, Cassandra, Firebase Firestore |
KnowledgeGraphIndex? | グラフデータ(ノードとエッジ)管理 | Neo4j, ArangoDB, Amazon Neptune, TigerGraph?, JanusGraph? |
Querying †
Indexを使用してVectorをサーチする。
- トップ「K」セマンティック検索。
- デフォルトのPrompt Templateをカスタマイズ
Evaluation †
その多機能 †
エージェントの構築 †
ワークフローの構築 †
構造化データ抽出 †
トレースとデバッグ †
参考 †
公式 †
LlamaIndex - LlamaIndex
https://docs.llamaindex.ai/en/stable/
Home †
https://docs.llamaindex.ai/en/stable/
- High-Level Concepts
- Installation and Setup
- How to read these docs
- Starter Examples
- Discover LlamaIndex Video Series
- Frequently Asked Questions (FAQ)
- Starter Tools
Learn †
https://docs.llamaindex.ai/en/stable/understanding/
- Building an agent
- Building Workflows
- Structured Data Extraction
- Tracing and Debugging
- Evaluating
- Putting it all Together
Use Cases †
https://docs.llamaindex.ai/en/stable/use_cases/
- Prompting
- Question-Answering (RAG)
- Chatbots
- Structured Data Extraction
Examples †
https://docs.llamaindex.ai/en/stable/examples/
- Agents
- Chat Engines
- Cookbooks
- Customization
Component Guides †
https://docs.llamaindex.ai/en/stable/module_guides/
- Models
- Prompts
- Loading
- Indexing
非公式 †
LlamaIndexのXについてやってみた(v0.10 対応)|Aya* †