summary:
各データ単位をDocumentとして抽象化し,テキスト・画像・音声・ベクトル埋め込み・URI・メタ情報等を1つの一貫したオブジェクトとして扱うことができる.このDocumentの集合がDocumentArrayであり,これは Python における NumPy配列 や Pandas DataFrame に類似したAPIを持ちながら,機械学習と検索指向の操作に特化した振る舞いを実現する.
DocArrayの中核にあるDocumentは,構造化属性[tags]と非構造化属性[text,uri,blob,embedding,tensor等]を同時に保持できるように設計されている.ただし,各Documentは一つのタイプのコンテンツのみを含むことができるという制約がある.ベクトルは通常,NumPy配列あるいはPyTorch・TensorFlow・JAXのテンソルとして格納され,ONNXモデルによる埋め込み生成にも対応可能である.
通信方式としては,JSON・YAML・Protobufの各形式をサポートし,gRPC・WebSocket・HTTPを通じて高速なデータ転送を実現している.特にProtobufによるエンコーディングは,推論クラウドやベクトルデータベースとの高速かつ型安全な通信を可能とする.さらに,Documentは階層構造を持つことができ,チャンク単位での分割[たとえばPDFページ単位]や親子関係の保持を通じて複雑なドキュメント構造を自然に表現できる.DocumentArrayは,ベクトル検索エンジンであるFAISS,Weaviate,Qdrant,Milvus,Chroma,Pineconeなどと容易に統合可能であり,DocArrayレベルで近傍探索を行うことが可能である.
また,DocArrayは推論パイプラインやRAG[Retrieval-Augmented Generation]構成において,クエリ→ベクトル変換→検索→文脈付与→LLM推論という一連のステップを統一されたデータモデルのもとで記述可能にする.これにより,分散処理環境やクラウドエッジ構成における,マルチモーダルデータの連携・検索・同期・伝送が容易となる.
DocArrayは2021年,マルチモーダルAIの開発を専門とするJina AI社により初期開発された.当初は同社が提供するニューラル検索フレームワーク「Jina」の一部として設計されていたが,ユースケースの拡大に伴い,独立した汎用ライブラリとして発展した.DocArrayはその後,Jinaとは別にベクトルデータ処理や検索,分散データ転送の中核ライブラリとして利用されるようになり,2022年以降は大規模RAG構成やベクトルDBのクライアント層としても採用が進んだ.2023年5月にはDocArray v2が発表され,完全な書き換えが行われ,複数のベクトルデータベースに対する統一APIとPydanticスタイルの構文が特徴 Announcing DocArray v2 – LFAI & Dataとして導入された.この2系では,型安全性の向上,宣言的なデータモデリング,クラウドスケーラビリティ,データ永続化[S3,Parquet対応],ゼロコピー転送などが強化され,DocArrayは単なるクライアントライブラリから,高性能なマルチモーダルデータ転送フレームワークへと位置付けが進化した.
DocArrayはLinux Foundation AI & Data[LF AI & Data]傘下のプロジェクトとして管理されており,オープンソースコミュニティによる継続的な開発が行われている.DocArrayは現在に至るまで,マルチモーダルなデータ処理を統一的に表現する手段として,RAGパイプライン,検索エンジン,分散ベクトル同期,マルチGPU推論環境,LangChainとの統合などで広く利用されている.したがって,DocArrayは単なるデータ構造に留まらず,現代のAIワークフローにおいてインフラストラクチャレベルでの役割を担う存在となっている.
Mathematics is the language with which God has written the universe.