ファイル検索は、財産的価値のある製品情報やユーザーから提供されたドキュメントなど、モデルの外部からの知識でエージェントを強化します。
注
改善されたファイル検索ツールは、標準エージェント セットアップを使用して、ファイルが利用者自身のストレージ内に留まり、それらの取り込みに Azure AI 検索リソースが使用されることを保証し、データに対する完全な制御の維持を実現します。
ファイル ソース
- ローカル ファイルをアップロードする
- Azure Blob Storage (アジュール・ブロブ・ストレージ)
サポートされているファイルの種類
利用サポート
Azure AI Foundry のサポート | Python SDK | C# SDK | JavaScript SDK | REST API | 基本エージェントのセットアップ | 標準エージェントのセットアップ |
---|---|---|---|---|---|---|
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ファイルのアップロードのみ | ファイルのアップロードと BYO BLOB ストレージの使用 |
エージェントのセットアップに対する依存
基本エージェントのセットアップ
ファイル検索ツールは、Azure OpenAI Assistants と同じ機能を備えています。 Microsoft マネージドの検索とストレージ リソースが使用されます。
- アップロードされたファイルは、Microsoft マネージドのストレージ内に保存されます
- Microsoft マネージドの検索リソースを使用してベクトル ストアが作成されます
標準エージェントのセットアップ
ファイル検索ツールは、利用者がエージェントのセットアップ中に接続した Azure AI 検索リソースと Azure Blob Storage リソースを使用します。
- アップロードされたファイルは、接続された Azure Blob Storage アカウント内に保存されます
- 接続された Azure AI 検索リソースを使用してベクトル ストアが作成されます
どちらのエージェント セットアップでも、Azure OpenAI がインジェスト プロセス全体を処理します。これには以下が含まれます。
- ドキュメントの自動解析とチャンキング
- 埋め込みの生成と保存
- ユーザー クエリに対する関連コンテンツを取得するためのベクトル検索とキーワード検索両方の利用。
2 つのセットアップにおいてコードに違いはありません。唯一の違いは、ファイルと作成されたベクトル ストアが保存される場所です。
動作方法
ファイル検索ツールは、取得に関してすぐに使用できるいくつかのベスト プラクティスを実装しており、これらは、ファイルから適切なデータを抽出し、モデルの応答を強化するのに役立ちます。 ファイル検索ツール:
- ユーザーのクエリを書き換えて、検索用に最適化します。
- 複雑なユーザー クエリを複数の検索に分割し、並列で実行できるようにします。
- エージェントとスレッドの両方のベクトル ストアでキーワード検索とセマンティック検索の両方を実行します。
- 検索結果を再ランク付けして、最も関連性の高い結果を選択してから最終的な応答を生成します。
- ファイル検索ツールには、既定で次の設定が使用されます。
- チャンク サイズ: 800 トークン
- チャンク オーバーラップ: 400 トークン
- 埋め込みモデル: 256 ディメンションの text-embedding-3-large
- コンテキストに追加される最大チャンク数: 20
ベクトル ストア
ベクトル ストア オブジェクトを使用して、ファイル検索ツールでファイルを検索することができます。 ベクトル ストアにファイルを追加すると、ファイルの解析、チャンク化、埋め込みが自動的に行われ、キーワード検索とセマンティック検索の両方が可能なベクトル データベースにファイルが保存されます。 各ベクトル ストアには、最大 10,000 個のファイルを保持できます。 ベクトル ストアは、エージェントとスレッドの両方にアタッチできます。 現在、エージェントには最大で 1 つのベクトル ストアを、スレッドには最大で 1 つのベクトル ストアをアタッチできます。
同様に、次のいずかの方法で、これらのファイルをベクトル ストアから削除できます。
- ベクトル ストア ファイル オブジェクトを削除する、または
- 基になるファイル オブジェクトの削除。これにより、組織内のすべてのエージェントとスレッドのすべての vector_store および code_interpreter 構成からファイルが削除されます
最大ファイル サイズは 512 MB です。 各ファイルに含めるトークン数は、ファイルごとに 5,000,000 以下である必要があります (ファイルを添付するときに自動的に計算されます)。
実行を作成する前にベクトル ストアを確実に準備する
実行を作成する前に、vector_store 内のすべてのファイルを完全に処理することを強くお勧めします。 これにより、ベクトル ストア内のすべてのデータが検索可能になります。 SDK のポーリング ヘルパーを使用するか、ベクトル ストア オブジェクトを手動でポーリングして、状態が完了となっているかを確認することで、ベクトル ストアの準備が整っているかどうかを確認できます。
スレッドのベクトル ストアにまだ処理中のファイルが含まれている場合、フォールバックとして、run オブジェクトで最大 60 秒の待機が発生します。 これは、実行が続行される前に、ユーザーがスレッドでアップロードするすべてのファイルを完全に検索できるようにするためです。 このフォールバック待機は、エージェントのベクトル ストアには適用されません。
ベクトル ストアの作成とファイルの追加
ベクトル ストアへのファイルの追加は、非同期操作です。 操作を確実に完了するために、公式の SDK の '作成とポーリング' ヘルパーを使用することをお勧めします。 SDK を使用していない場合、vector_store
オブジェクトを取得し、その file_counts
プロパティを監視して、ファイルのインジェスト操作の結果を確認できます。
また、ファイルは、ベクトル ストア ファイルを作成して、ファイルの作成後にベクトル ストアに追加することができます。
# create a vector store with no file and wait for it to be processed
vector_store = project_client.agents.create_vector_store_and_poll(data_sources=[], name="sample_vector_store")
print(f"Created vector store, vector store ID: {vector_store.id}")
# add the file to the vector store or you can supply file ids in the vector store creation
vector_store_file_batch = project_client.agents.create_vector_store_file_batch_and_poll(
vector_store_id=vector_store.id, file_ids=[file.id]
)
print(f"Created vector store file batch, vector store file batch ID: {vector_store_file_batch.id}")
または、最大 500 個のファイルのバッチを作成して、複数のファイルをベクトル ストアに追加することもできます。
batch = project_client.agents.create_vector_store_file_batch_and_poll(
vector_store_id=vector_store.id,
file_ids=[file_1.id, file_2.id, file_3.id, file_4.id, file_5.id]
)
基本的なエージェント セットアップ: ベクトル ストアからのファイルの削除
以下のいずかの方法で、ファイルをベクトル ストアから削除できます。
- ベクトル ストア ファイル オブジェクトを削除する、または
- 基になるファイル オブジェクトを削除すると、組織内のすべてのエージェントとスレッドのすべてのvector_storeおよびcode_interpreter構成からファイルが削除されます。
最大ファイル サイズは 512 MB です。 各ファイルに含めるトークン数は、ファイルごとに 5,000,000 以下である必要があります (ファイルを添付するときに自動的に計算されます)。
ベクトル ストアを削除する
ファイル検索ツールからベクトル ストアを削除することができます。
file_search_tool.remove_vector_store(vector_store.id)
print(f"Removed vector store from file search, vector store ID: {vector_store.id}")
project_client.agents.update_agent(
agent_id=agent.id, tools=file_search_tool.definitions, tool_resources=file_search_tool.resources
)
print(f"Updated agent, agent ID: {agent.id}")
ベクトル ストアの削除
project_client.agents.delete_vector_store(vector_store.id)
print("Deleted vector store")
有効期限ポリシーによるコスト管理
基本的なエージェント セットアップでは、file_search
ツールは vector_stores
オブジェクトをリソースとして使用し、作成された vector_store オブジェクトのサイズに基づいて課金が行われます。 ベクトル ストア オブジェクトのサイズは、ファイルから解析されたすべてのチャンクとそれに対応する埋め込みの合計です。
これらの vector_store オブジェクトに関連するコストを管理しやすくするために、vector_store
オブジェクトに有効期限ポリシーのサポートが追加されました。 これらのポリシーは、vector_store
オブジェクトの作成または更新時に設定できます。
vector_store = project_client.agents.create_vector_store_and_poll(
name="Product Documentation",
file_ids=[file_1.id],
expires_after={
"anchor": "last_active_at",
"days": 7
}
)
スレッドのベクトル ストアに適用される既定の有効期限ポリシー
スレッド ヘルパー (スレッド内の tool_resources.file_search.vector_stores
またはメッセージ内の message.attachments
など) を使用して作成されたベクトル ストアには、既定では最後にアクティブになった後 (ベクトル ストアが実行の一部であった最後の時刻として定義されます) 7 日間という有効期限ポリシーがあります。
ベクトル ストアの有効期限が切れると、そのスレッドでの実行は失敗します。 この問題を修正するには、同じファイルを含む新しい vector_store を再作成し、それをスレッドに再アタッチします。
サポートされているファイルの種類
注
テキストまたは MIME の種類の場合、エンコードは utf-8、utf-16、または ASCII のいずれかである必要があります。
ファイル形式 | MIME の種類 |
---|---|
.c |
text/x-c |
.cs |
text/x-csharp |
.cpp |
text/x-c++ |
.doc |
application/msword |
.docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.html |
text/html |
.java |
text/x-java |
.json |
application/json |
.md |
text/markdown |
.pdf |
application/pdf |
.php |
text/x-php |
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation |
.py |
text/x-python |
.py |
text/x-script.python |
.rb |
text/x-ruby |
.tex |
text/x-tex |
.txt |
text/plain |
.css |
text/css |
.js |
text/javascript |
.sh |
application/x-sh |
.ts |
application/typescript |