Azure OpenAI Service On Your Data の仕組みと使う上で気を付けるべきポイント
はじめに
Microsoft Build 2023 で発表された Azure OpenAI Service の On Your Data のパブリックプレビューが開始 しました。体感的には On Your Data は日本国内の全 Azure OpenAI Service ユーザーのうち 8 ~ 9 割程度のユーザーが待ち望んでいた機能ではないかと感じます。(ryohtaka 調べ)
- What's new in Azure OpenAI Service - June 2023
- New easy way to add your data to Azure OpenAI Service (YouTube)
しかし、実際に On Your Data を活用するためには気を付けるべきポイントが数多く存在しており、正確な期待値を持ったうえで使うことが非常に重要になってきます。そこで、本記事では On Your Data の仕組みと使う上で気を付けるべきポイントに着目して情報をまとめました。
なお、データの下準備を除く On Your Data の使い方自体はとても簡単です。クイックスタートや分かりやすく解説してくれている記事も存在していますのでそれらを参照してください。
- クイック スタート: 独自のデータを使用して Azure OpenAI モデルとチャットする
- Azure OpenAIで独自データ追加機能(Add your data)を試してみた
- 独自ナレッジをノーコードでChatGPTに連携!Azure Open AI「Add your data」
【追記】2023 年 8 月の更新でいくつかの機能が追加されました。On Your Data は今後も機能が追加されていく可能性がありますので、必ずドキュメントの最新情報も合わせてご確認ください。
1. On Your Data で何が変わる?
何がブレイクスルーなのかをまとめます。
1.1. 簡易的なアプリケーションのデプロイ
Azure OpenAI Service On Your Data を使うと、New Bing のような UX のチャット検索をユーザー独自のデータを対象にして行う簡易的な Web アプリケーションをコードを書かずに開発することができます。下図の破線で囲った部分です。
これまでも、いわゆる Retrieval Augmented Generation (RAG) というデザインパターンに則ればユーザー独自のデータに対するチャット検索を実現することはできましたが、やや複雑な処理を実装する必要がありました。この開発を省力化してくれる点が On Your Data のブレイクスルーのひとつです。
なお、最終的に作られる簡易アプリケーションの UX は以前から存在している公式のサンプル実装とほぼ同じです。
参考
- microsoft/sample-app-aoai-chatGPT (On Your Data でデプロイされる Web アプリケーションのソースコード)
- Azure-Samples/azure-search-openai-demo (以前から公開されていた公式サンプル実装)
- 業務データを活用したAIチャットシステムワークショップ (上記サンプル実装を step-by-step に分割して日本語でわかりやすく解説してくれているコンテンツ)
[補足] Retrieval Augmented Generation (RAG) とは?
既に広く認識され始めていますが、生成系の大規模言語モデル (LLM) はあくまでも Web 上の膨大なテキストデータをもとに学習を行い、次に来る可能性の高い単語の予測を繰り返すことでそれらしいテキストを生成します。そのため、(事実として) 正しくない情報が出力されるハルシネーションが起こり得ることに留意する必要があり、LLM に対して直接知識を問うのはあまり適した使い方ではありません。
しかし、一方で LLM を情報検索に応用したいというモチベーションが少なからず存在していることも事実で、最近はその解決策として Retrieval Augmented Generation (RAG) と呼ばれるデザインパターンが一般的になりつつあります。RAG は一言で表現するとナレッジベースの外部化で、RAG ではユーザーからの問いに対して、バックエンドに置いたナレッジベース (e.g. Azure Cognitive Search) で検索を行い、その結果を踏まえてユーザーのからの問いかけに対する回答を生成します。
ちなみに、このように LLM に根拠の情報 (e.g. 独自データに対する検索、Web 検索、等) に基づかせて回答を行うことをグラウンディング (Grounding) と呼びます。
RAG アプリケーションのイメージ
- RAG アプリは言語モデルを使ってユーザーからの自然言語による問いかけをナレッジベースの検索キーワードへ変換する。
- RAG アプリは検索キーワードを使ってナレッジベースに対して検索を行う。
- ナレッジベースは事前に作成しておいた検索インデックスによって検索結果を返す。
- RAG アプリはナレッジベースの検索結果 (引用情報) を参考にして使ってユーザーへの回答文を生成する。
ユーザーからのリクエストの例 (メッセージ部分のみ)
"messages": [
{
"role": "system",
"content": "You are an AI assistant that helps people find information. You retrieve English documents, and you should read them carefully in English and answer in English."
},
{
"role": "user",
"content": "What is Microsoft Azrue?"
}
]
RAG アプリからのレスポンスの例 (メッセージ部分のみ)
"messages": [
{
"index": 0,
"role": "tool",
"content": "{\"citations\": [{\"content\": \"The Azure Resource Manager, introduced in 2014, enables users to create groups of related services so that closely coupled resources can be deployed, managed, and monitored together.\\n_START_SECTION_\\nPrivacy\\n_START_PARAGRAPH_\\nMicrosoft has stated that, per the USA Patriot Act, the US government could have access to the data even if the hosted company is not American and the data resides outside the USA. However, Microsoft Azure is compliant with the E.U. Data Protection Directive (95/46/EC). To manage privacy and security-related concerns, Microsoft has created a Microsoft Azure Trust Center, and Microsoft Azure has several of its services compliant with several compliance programs including ISO 27001:2005 and HIPAA. A full and current listing can be found on the Microsoft Azure Trust Center Compliance page. Of special note, Microsoft Azure has been granted JAB Provisional Authority to Operate (P-ATO) from the U.S. government in accordance with guidelines spelled out under the Federal Risk and Authorization Management Program (FedRAMP), a U.S. government program that provides a standardized approach to security assessment, authorization, and continuous monitoring for cloud services used by the federal government.\\n_START_SECTION_\\nMeek-Azure\\n_START_PARAGRAPH_\\nThe Tor Project uses Microsoft Azure as a domain front in its obfuscation plugin, Meek. Meek-Azure is commonly used in China where Tor relays are regularly blocked and disabled. Meek-Azure became the last Meek after the banning of Amazon cloud services.\", \"id\": null, \"title\": \"_START_ARTICLE_\", \"filepath\": \"Q725967_Microsoft Azure.txt\", \"url\": \"https://xxx.blob.core.windows.net/wiki40ben-ms-articles/Q725967_Microsoft%20Azure.txt\", \"metadata\": {\"chunking\": \"orignal document size=330. Scores=6.4695673 and None.Org Highlight count=21.\"}, \"chunk_id\": \"0\"}, {\"content\": \"_START_ARTICLE_\\nMicrosoft Azure SQL Database\\n_START_SECTION_\\nDesign\\n_START_PARAGRAPH_\\nAzure SQL Database shares the SQL Server 2016 codebase. It is compatible with SQL Server 2014 and 2016 and most of the features available in SQL Server 2016 are available in Azure SQL Database. A list of incompatibilities is published by Microsoft.\", \"id\": null, \"title\": \"_START_ARTICLE_\", \"filepath\": \"Q1187310_Microsoft Azure SQL Database.txt\", \"url\": \"https://xxx.blob.core.windows.net/wiki40ben-ms-articles/Q1187310_Microsoft%20Azure%20SQL%20Database.txt\", \"metadata\": {\"chunking\": \"orignal document size=82. Scores=6.164525 and None.Org Highlight count=7.\"}, \"chunk_id\": \"0\"}, {\"content\": \"_START_ARTICLE_\\nMicrosoft Azure Web Sites\\n_START_SECTION_\\nImplementation\\n_START_PARAGRAPH_\\nMicrosoft Azure Web Sites is implemented as websites that are dynamically created on-demand on servers running Windows Server 2012 and IIS 8.0. When a client posts a request to a web site, Microsoft Azure Web Sites dynamically provisions the site on one of the Azure virtual machines pointing it at content stored in Azure Storage containers. The Azure Virtual Machines are deployed in groups called \\\"Stamps\\\", which may contain hundreds of such machines. Microsoft deploys these stamps in its Azure data centers across the world, and adds more stamps as demand grows.\\n_START_SECTION_\\nTiers\\n_START_PARAGRAPH_\\nAzure Web Sites services are offered in 4 tiers. The entry-level tier is the \\\"free\\\" tier. The free tier supports up to 10 websites with 1 GB of content storage, and is limited to 165 MB of daily data egress. The first for-pay tier is the \\\"Shared\\\" tier. Shared tier sites support custom domains and can be scaled out to up to 6 instances. The current highest for-pay tier is the \\\"Standard\\\" tier. Standard tier websites run on VMs dedicated exclusively to a single customer's websites. The Standard tier supports SSL (both SNI and IP-based), scaling out to up to 10 instances, and file storage of up to 50 GB of content._NEWLINE_Basic and Standard tier websites can be deployed on 3 sizes of virtual machines: Small VMs with 1 virtual CPU and 1.75GB of RAM, Medium VMs with 2 virtual CPUs and 3.5 GB of RAM, and Large VMs with 4 virtual CPUs and 7GB of available RAM.\\n_START_SECTION_\\nHistory\\n_START_PARAGRAPH_\\nMicrosoft initially offered a basic web hosting service as part of Office Live Small Business, which was launched in late 2007. Office Live Small Business offered customers free and commercial web hosting with a built-in system for creating websites based on build-in templates and a site creation wizard._NEWLINE_When Microsoft started allocating resources into developing its numerous cloud solutions, a group was formed in Microsoft Azure to develop Microsoft Azure Web Sites. Microsoft Azure Web Sites was announced in June 2012 as a preview release._NEWLINE_In parallel, Microsoft developed Microsoft Azure Pack, which offers the same technology that can be installed as a private-cloud on sets of servers at a customer's site and under direct customer control._NEWLINE_In mid-2013, both Microsoft Azure Web Sites and Microsoft Azure Pack were officially released to the public.\\n_START_SECTION_\\nDatacenters\\n_START_PARAGRAPH_\\nMicrosoft operates Microsoft Azure in a number of data centers throughout the world with Microsoft Azure Web Sites available in a subset of these. When deploying websites on Microsoft Azure Web Sites customers can choose to deploy sites in a data center in any of the following geographical regions: East US, North central US, West US, East Asia, Brazil South, North Europe, West Europe, Japan East, Japan West or East Asia.\", \"id\": null, \"title\": \"_START_ARTICLE_\", \"filepath\": \"Q17048728_Microsoft Azure Web Sites.txt\", \"url\": \"https://xxx.blob.core.windows.net/wiki40ben-ms-articles/Q17048728_Microsoft%20Azure%20Web%20Sites.txt\", \"metadata\": {\"chunking\": \"orignal document size=660. Scores=5.822534 and None.Org Highlight count=39.\"}, \"chunk_id\": \"0\"}, {\"content\": \"_START_ARTICLE_\\nMicrosoft Azure Dev Tools for Teaching\\n_START_SECTION_\\nHistory\\n_START_PARAGRAPH_\\nAll Student get access to Cloud resources and Azure credit student must register at the Microsoft Azure for Student and verify their identity through their verified educational institutions. If an institution is not listed on the available list, the user may manually verify their student status by uploading a proof such as an ID card._NEWLINE_The Microsoft student developer tools programme was announced by Bill Gates as DreamSpark on February 20, 2008 during a speech at Stanford University. It is estimated that up to 35 million students will be able to access these software titles through this program. The service was renamed to Microsoft Imagine on September 7, 2016, to better align with the annual Imagine Cup competition hosted by Microsoft. and renamed to Azure Dev Tools for Teaching and Azure for Students in June 2018\\n_START_SECTION_\\nRepacked as Azure Dev Tools for Teaching\\n_START_PARAGRAPH_\\nThe Microsoft Azure Dev Tools for Teaching on 13 February 2019 with Cloud services for students using the Microsoft Azure cloud and incorporating Microsoft Learn online learning resources.\\n_START_SECTION_\\nVerification\\n_START_PARAGRAPH_\\nProof of student status is required to download software and obtain product keys. Students can verify their identity using ISIC cards, access codes ordered by school administrators, or .edu academic email addresses. Students remain verified for 12 months afterwards and can renew after the 12 month period using their academic email. If students can't find their school, they can manually submit a response with a proof of student status.\\n_START_SECTION_\\nProducts offered\\n_START_PARAGRAPH_\\nSeveral development software titles are available for download through the program. They include:\", \"id\": null, \"title\": \"_START_ARTICLE_\", \"filepath\": \"Q909738_Microsoft Azure Dev Tools for Teaching.txt\", \"url\": \"https://xxx.blob.core.windows.net/wiki40ben-ms-articles/Q909738_Microsoft%20Azure%20Dev%20Tools%20for%20Teaching.txt\", \"metadata\": {\"chunking\": \"orignal document size=380. Scores=5.5316896 and None.Org Highlight count=19.\"}, \"chunk_id\": \"0\"}, {\"content\": \"_START_ARTICLE_\\nMicrosoft Azure\\n_START_SECTION_\\nServices\\n_START_PARAGRAPH_\\nMicrosoft lists over 600 Azure services, of which some are covered below:\\n_START_SECTION_\\nMedia services\\n_START_PARAGRAPH_\\nA PaaS offering that can be used for encoding, content protection, streaming, or analytics.\\n_START_SECTION_\\nCDN\\n_START_PARAGRAPH_\\nA global content delivery network (CDN) for audio, video, applications, images, and other static files. It can be used to cache static assets of websites geographically closer to users to increase performance. The network can be managed by a REST based HTTP API._NEWLINE_Azure has 54 point of presence locations worldwide (also known as Edge locations) as of August 2018.\\n_START_SECTION_\\nAzure Blockchain Workbench\\n_START_PARAGRAPH_\\nThrough Azure Blockchain Workbench, Microsoft is providing the required infrastructure to setup a consortium network in multiple topologies using a variety of consensus mechanisms. Microsoft provides integration from these blockchain platforms to other Microsoft services to streamline development of distributed applications. Microsoft supports many general-purpose blockchains including Ethereum and Hyperledger Fabric and purpose-built blockchains like Corda.\\n_START_SECTION_\\nFunctions\\n_START_PARAGRAPH_\\nAzure functions are used in serverless computing architectures where subscribers can execute code as a Function-as-a-Service (FaaS) without managing the underlying server resources.\\n_START_SECTION_\\nRegional expansion and examples\\n_START_PARAGRAPH_\\nAzure is generally available in 54 regions around the world. Microsoft has announced an additional 12 regions to be opened soon (as of October 2018). Microsoft is the first hyper-scale cloud provider that has committed to building facilities on the continent of Africa with two regions located in South Africa. An Azure geography contains multiple Azure Regions, such as example \\u201cNorth Europe\\u201d (Dublin, Ireland), \\u201cWest Europe\\u201d (Amsterdam, Netherlands). Where a location represents the city or area of the Azure Region. Each Azure Region is paired with another region within the same geography; this makes them a regional pair. In this example, Amsterdam and Dublin are the locations which form the regional-pair._NEWLINE_Microsoft has some Gold partners available across the globe to sell its products. In August 2018, Toyota Tsusho began a partnership with Microsoft to create fish farming tools using the Microsoft Azure application suite for IoT technologies related to water management. Developed in part by researchers from Kindai University, the water pump mechanisms use artificial intelligence to count the number of fish on a conveyor belt, analyze the number of fish, and deduce the effectiveness of water flow from the data the fish provide. The specific computer programs used in the process fall under the Azure Machine Learning and the Azure IoT Hub platforms.\\n_START_SECTION_\\nDesign\\n_START_PARAGRAPH_\\nMicrosoft Azure uses a specialized operating system, called Microsoft Azure, to run its \\\"fabric layer\\\": A cluster hosted at Microsoft's data centers that manages computing and storage resources of the computers and provisions the resources (or a subset of them) to applications running on top of Microsoft Azure. Microsoft Azure has been described as a \\\"cloud layer\\\" on top of a number of Windows Server systems, which use Windows Server 2008 and a customized version of Hyper-V, known as the Microsoft Azure Hypervisor to provide virtualization of services._NEWLINE_Scaling and reliability are controlled by the Microsoft Azure Fabric Controller, which ensures the services and environment do not fail if one or more of the servers fails within the Microsoft data center, and which also provides the management of the user's Web application such as memory allocation and load balancing._NEWLINE_Azure provides an API built on REST, HTTP, and XML that allows a developer to interact with the services provided by Microsoft Azure. Microsoft also provides a client-side managed class library that encapsulates the functions of interacting with the services. It also integrates with Microsoft Visual Studio, Git, and Eclipse._NEWLINE_In addition to interacting with services via API, users can manage Azure services using the Web-based Azure Portal, which reached General Availability in December 2015. The portal allows users to browse active resources, modify settings, launch new resources, and view basic monitoring data from active virtual machines and services.\\n_START_SECTION_\\nDeployment models\\n_START_PARAGRAPH_\\nMicrosoft Azure offers two deployment models for cloud resources: the \\\"classic\\\" deployment model and the Azure Resource Manager. In the classic model, each Azure resource (virtual machine, SQL database, etc.) was managed individually\", \"id\": null, \"title\": \"_START_ARTICLE_\", \"filepath\": \"Q725967_Microsoft Azure.txt\", \"url\": \"https://xxx.blob.core.windows.net/wiki40ben-ms-articles/Q725967_Microsoft%20Azure.txt\", \"metadata\": {\"chunking\": \"orignal document size=1005. Scores=5.380728 and None.Org Highlight count=50.\"}, \"chunk_id\": \"1\"}], \"intent\": \"What is Microsoft Azrue?\"}",
"end_turn": false
},
{
"index": 1,
"role": "assistant",
"content": "Microsoft Azure is a cloud computing platform developed by Microsoft that allows individuals and businesses to build, deploy, and manage applications and services in the cloud [doc1]. It provides a wide range of services and tools for building, deploying, and managing applications and services, including virtual machines, web applications, databases, storage, networking, analytics, and more [doc5].",
"end_turn": true
}
]
参考
- Retrieval Augmented Generation (RAG)
- Retrieval Augmented Generation: Streamlining the creation of intelligent natural language processing models
1.2. グラウンディング対象ナレッジベースの切り替え
REST API でのリクエスト時に最新のプレビュー版 API Version である 2023-06-01-preview
を指定したうえで dataSources
パラメータを与えることで、グラウンディング対象のナレッジベースを指定することができます。これにより、リクエストのたびに「今回はこっちのナレッジベースでグラウンディングして」といった風にナレッジベースを切り替えることができるようになります。
個人的には、前述の簡易アプリケーションの開発よりも大きなブレイクスルーだと感じています。
ナレッジベース切り替えのイメージ
リクエストのフォーマット
リクエストのフォーマットは以下のようになります。このようにして、グラウンディング対象のナレッジベース (具体的には Azure Cognitive Search インデックス) を指定することができます。
-
<your-aoai-resource-name>
: Azrue OpenAI Service のリソース名 -
<your-deployment-name>
: 対象のデプロイ名 (Chat Completions が可能なモデルのうちgpt-35-turbo
もしくはgpt-4
を指定する) -
<your-aoai-key>
: Azure OpenAI Service のキー -
<target-cognitive-search-resource-name>
: グラウンディング対象の Azure Cognitive Search のリソース名 -
<target-cognitive-search-key>
: グラウンディング対象の Azure Cognitive Search のキー -
<target-cognitive-search-index-name>
: グラウンディング対象の Azure Cognitive Search インデックス名
POST https://<your-aoai-resource-name>/openai/deployments/<your-deployment-name>/extensions/chat/completions?api-version=2023-06-01-preview
Content-Type: application/json
api-key: <your-aoai-key>
chatgpt_url: https://<your-aoai-resource-name>/openai/deployments/<your-deployment-name>/chat/completions?api-version=2023-06-01-preview
chatgpt_key: <your-aoai-key>
{
"dataSources": [
{
"type": "AzureCognitiveSearch",
"parameters": {
"endpoint": "https://<target-cognitive-search-resource-name>.search.windows.net",
"key": "<target-cognitive-search-key>",
"indexName": "<target-cognitive-search-index-name>"
}
}
],
"messages": [
{
"role": "system",
"content": "You are an AI assistant that helps people find information. You retrieve English documents, and you should read them carefully in English and answer in English."
},
{
"role": "user",
"content": "What is Microsoft Azrue?"
}
]
}
参考
2. 気を付けるべきポイント
これ以降では気を付けるべきポイントについてまとめます。
2.1. 対応モデル
On Your Data は以下のモデルで利用可能です。
gpt-35-turbo
gpt-35-turbo-16k
gpt-4
gpt-4-32k
例えば gpt-35-turbo
の最大トークンは 4,096 (日本語の場合 約 3,700 文字程度) ですので、システムメッセージ
、ユーザーのプロンプト
、ナレッジベースからの検索結果
、ユーザーへの回答
すべてがこの最大トークンに収まるようなプロンプト設計と、ナレッジベースの整備 (短いチャンクに有益な情報が詰まっているデータの整備) が必要になります。
参考
- 独自のデータに基づく Azure OpenAI (プレビュー)
- Azure OpenAI Service モデル
- OpenAI 言語モデルで日本語を扱う際のトークン数推定指標
- OpenAI 言語モデルごとのエンコーディング一覧
2.2. 日本語
2.2.1. アナライザーの言語
On Your Data には 3 通りのナレッジベース指定方法があります。
- 既存の Azure Cognitive Search インデックスを指定 (ユーザー任意のインデックスを作成)
- データが格納された Azure Blob コンテナーを指定 (インデックス自動作成)
- Azure Blob コンテナーにファイルをアップロード (インデックス自動作成)
このいずれの選択肢を取った場合も、最終的な構成はほぼ同じになりますが、注意点としては、2 と 3 を選択した場合に Azure Cognitive Search のインデックスが自動作成され、アナライザーの言語が英語固定である点です。検索対象が英語であれば特に問題ありませんが、日本語の文書を検索対象としたい場合はインデックス作成時の字句解析が正しく行われず、目的の文書を上手く検索できなくなってしまいます。
1. 既存のインデックスを指定
2. Blob ストレージを指定 / 3. ファイルアップロード
よって、必然的に日本語を検索対象にしたい場合は 1 が唯一の選択肢となります。 Azure Cognitive Search のクライアントライブラリ や API の扱いに慣れているようであれば日本語アナライザーを指定したインデックスを自分で作成します。そうでない場合は、英語以外のアナライザーを使ってインデックスを作成するためのツールが公式サンプルとして公開されていますので、それを使ってインデックスを作成します。このツールを使うと、ナレッジベースとしてインデックスを指定する際に求められるフィールド を全て作成してくれます。
参考
- Azure Cognitive Search インデックスの文字列フィールドに言語アナライザーを追加する
- Azure Cognitive Search での関連性とスコアリング
- microsoft/sample-app-aoai-chatGPT (インデックス作成ツール)
- 生成AI用Cognitive Searchの言語アナライザーを日本語にしたい (上記ツールの使い方の日本語解説記事)
2.2.2. システムメッセージ
日本語のナレッジベースを対象に日本語のプロンプトで検索を行う場合、稀に回答が英語 (OpenAI の言語モデルの第一言語?) になってしまうことがあります。この問題に対しては、下記のようなシステムメッセージを追加して明確に日本語で回答するよう指示することで低減できます。
あなたは、情報の検索を支援する AI アシスタントです。 日本語のドキュメントを取得し、それを日本語で注意深く読み、日本語で回答する必要があります。
参考
2.2.3. Azure Cognitive Search のセマンティック検索
Azure Cognitive Search のセマンティック検索は、Azure Cognitive Search の検索品質を上げることができるプレビュー中の機能です。対象言語が英語の場合は On Your Data と共に使うことができますが、執筆時点で英語以外の言語には対応していないため、日本語環境では使用できないことに注意が必要です。
参考
2.3. インデックス作成処理の再実行
前述の 3 通りのナレッジベース指定方法のうち、インデックスが自動作成される 2 と 3 では インデクサーが作成されず、インデックスの再作成が行えません。そのため、ナレッジベースが更新されていくような状況 (通常多くのユースケースがこれに該当すると思われる) では、1 が唯一の選択肢になると思われます。
- 既存の Azure Cognitive Search インデックスを指定 (ユーザー任意のインデックスを作成)
- データが格納された Azure Blob コンテナーを指定 (インデックス自動作成)
- Azure Blob コンテナーにファイルをアップロード (インデックス自動作成)
インデックス再作成の方法は下記の 2 通りが考えらえます。
- インデクサーの再実行
- Azure Cognitive Search のクライアントライブラリで実装した処理で再作成 (任意のジョブスケジューラーで実行)
【追記】 2. に限り、2023 年 8 月のアップデートでインデックスの自動更新機能が追加されました。
参考
2.4. チャンキングの重要性
チャット検索において良い検索結果を得るためには、ドキュメントの質の高いチャンク (分割) を作れるかどうかが肝になります。(下図)
前述のとおり、現時点で日本語環境を想定する場合「既存の Azure Cognitive Search インデックスを指定」が事実上唯一の選択肢となります。この選択肢を取る場合のチャンキングの方法・タイミングは下記 2 通りが考えられます。どちらの選択肢を取るかどうかは、プロジェクトの責任分界点、再作成の頻度、開発者のお好み等により決ると思われます。(ケースバイケース)
- 任意のチャンキング処理を独立して行う。チャンキングした後に Blob コンテナーに格納。その後、インデクサーによりインデックスを作成。
- 同時に行う。LangChain 等のライブラリを使って任意のチャンキングを行いつつ Azure Cognitive Search のクライアントライブラリ によってインデックスを作成。
なお、チャンキングのみに注目しても、ざっと下記のようなパラメーターが存在しており、これらは全て検索クオリティの向上を目指す際の試行錯誤の要素となります。
- 単純にぶつ切りするのか or オーバーラップさせるのか
- チャンクの長さはどうするのか
- オーバーラップの長さはどうするのか
- チャンクは文字数で見るのか or トークン数で見るのか
- etc
参考
2.5. Private Endpoint のサポート
既存の Azure Cognitive Search インデックスを指定
するパターンについては、Azure Cognitive Search から On Your Data に対する Private Endpoint を作成できる機能が登録制で公開されました。
ただし、Blob ストレージを指定
と ファイルアップロード
のパターンにはまだ対応していません。
Storage accounts in private networks are currently not supported by Azure OpenAI on your data.
参考
- Virtual network support & private network support
- Apply Azure Cognitive Search Private Endpoint Request for Azure OpenAI on your data (申請フォーム)
おわりに
アナライザーの言語指定などサービスの成熟に伴う今後の機能追加に期待する部分もありますが、結局のところしっかり使い物になる仕組みを作るためには、足元の地道なデータ整備が最も近道となりそうです。
また、チャット検索で思い通りの検索結果が得られない場合は、そもそもチャット検索である必要があるかと問い直して、Azure Cognitive Search のみを使った従来の情報検索からスモールスタートするなど柔軟に対応をする必要があると思います。
以上です。🍵
Discussion