「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ステージ †
Loading †
テキストデータを読み込む
Indexing †
テキストデータからインデックスを作成する。
Storing †
テキストデータとインデックスを永続化する。
Querying †
インデックスを使用してテキストデータを検索する。
Evaluation †
検索のリクエストレスポンスを客観的に評価。
機能 †
データの取得 †
生のテキストデータだけでなく、
- ファイル (PDF、ePub、Word、PowerPoint?、Audioなど) や
- Webサービス (Notion、Slack、Wikipediaなど) を
データソースとして利用できる。
インデックスの作成 †
- テキストデータをチャンクに分割し、クエリからチャンクを検索するインデックスを作成する。
- さまざまなインデックス化の方法がある(キーワード、ベクトル、グラフ)。
データのストア †
Vector Store、Document Store、Index Storeなどのストアにデータを保存。
- Vector Store
- Document Store
- Index Store
データの検索 †
インデックスを使用してデータを検索
- キーワード検索:キーワードを使用し、文書ベクトルを検索し結果を得る。
- ベクトル検索:クエリもベクトルに変換し、文書ベクトルと 近似最近傍探索(ANN)
- グラフ検索:全文検索後、ノードとエッジから関連文書を検索し結果を得る。
プロバイダ †
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 †
- 基本的には、キーワード、ベクトル、グラフなどの検索を使用する。
- キーワード:SummaryIndex?、KeywordTableIndex?、SQLStructStoreIndex?
- KnowledgeGraphIndex?:RDF、トリプレット
- PropertyGraphIndex?:プロパティグラフ
- TreeIndex?:タキソノミー?
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 |
キーワード | SummaryIndex?、KeywordTableIndex?、SQLIndex | 文書型データ、メタデータ管理 | MongoDB, Elasticsearch, DynamoDB, Cassandra, Firebase Firestore |
ベクトル | VectorStoreIndex? | ベクトルデータ管理 | ANN Pinecone, Weaviate, Milvus, Qdrant, Redis |
グラフ | KnowledgeGraphIndex?、PropertyGraphIndex?、TreeIndex? | グラフデータ(ノードとエッジ)管理 | Neo4j, ArangoDB, Amazon Neptune, TigerGraph?, JanusGraph? |
Querying †
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* †
その他 †
Indexing †
Graph †