Arama dizininde vektörleştirici yapılandırma
Azure AI Search'te vektörleştirici , Azure OpenAI'de dağıtılan bir ekleme modeli gibi vektörleştirme gerçekleştiren ve sorgu yürütme sırasında metinleri (veya görüntüleri) vektörlere dönüştüren yazılımdır.
Arama dizininde tanımlanır, aranabilir vektör alanlarına uygulanır ve sorgu zamanında metin veya resim sorgusu girişi için ekleme oluşturmak için kullanılır. Bunun yerine dizin oluşturma işleminin bir parçası olarak içeriği vektörleştirmeniz gerekiyorsa Tümleşik Vektörleştirme (Önizleme) bölümüne bakın. Dizin oluşturma sırasında yerleşik vektörleştirme için ham metin içeriğiniz için ekleme modelini çağıran bir dizin oluşturucu ve beceri kümesi yapılandırabilirsiniz.
Dizin aramasına vektörleştirici eklemek için Azure portalında dizin tasarımcısını kullanabilir, Dizin Oluşturma veya Güncelleştirme REST API'sini çağırabilir ya da bu özelliği sağlamak için güncelleştirilen herhangi bir Azure SDK paketini kullanabilirsiniz.
Vektörleştiriciler, genel olarak kullanılabilir bir beceri vektörleştiricisi çifti kullandığınız sürece genel kullanıma sunulmuştur. AzureOpenAIEmbedding vektörleştiricisi ve AzureOpenAIEmbedding becerileri genel olarak kullanılabilir. Özel Web API vektörleştiricisi de genel olarak kullanılabilir.
Azure AI Vision vektörleştiricisi, Azure AI Studio model kataloğu vektörleştiricisi ve eşdeğer becerileri hala önizleme aşamasındadır. Beceri kümesi, önizleme becerilerini ve vektörleştiricileri kullanmak için 2024-05-01-preview REST API'sini belirtmelidir.
Önkoşullar
Azure AI Search'te aranabilir vektör alanları olan bir dizin.
Azure OpenAI'de text-embedding-ada-002, text-embedding-3-small veya text-embedding-3-large gibi dağıtılmış bir ekleme modeli. Sorguyu vektörleştirmek için kullanılır. Dizininizdeki vektör alanı için kullanılan ekleme modeliyle aynı olmalıdır. Azure AI Studio model kataloğundan veya Azure AI Vision modelinden dağıtılan modelleri de kullanabilirsiniz.
Ekleme modelini kullanma izinleri. Azure OpenAI kullanıyorsanız, çağıranın Bilişsel Hizmetler OpenAI Kullanıcı izinlerine sahip olması gerekir. İsterseniz bir API anahtarı da sağlayabilirsiniz.
Sorguyu göndermek ve bir yanıt kabul etmek için REST istemcisine sahip Visual Studio Code.
Vektör sorgusu yürütmeyi onaylamak için arama hizmetinizde tanılama günlüğünü etkinleştirmenizi öneririz.
Örnek verilerle vektörleştiriciyi deneyin
Verileri içeri aktarma ve vektörleştirme sihirbazı Azure Blob depolamadan dosyaları okur, öbeklenmiş ve vektörleştirilmiş alanlarla bir dizin oluşturur ve bir vektörleştirici ekler. Tasarım gereği, sihirbaz tarafından oluşturulan vektörleştirici, blob içeriğini dizine almak için kullanılan ekleme modeline ayarlanır.
Örnek veri dosyalarını Azure Depolama'da bir kapsayıcıya yükleyin. Bu yönergeleri ücretsiz bir arama hizmetinde test etmek için NASA'nın dünya kitabından bazı küçük metin dosyaları kullandık.
Veri kaynağı için blob kapsayıcısını seçerek Verileri içeri aktarma ve vektörleştirme sihirbazını çalıştırın.
Text-embedding-ada-002'nin mevcut dağıtımını seçin. Bu model, dizin oluşturma sırasında eklemeler oluşturur ve sorgular sırasında kullanılan vektörleştiriciyi yapılandırmak için de kullanılır.
Sihirbaz tamamlandıktan ve tüm dizin oluşturucu işlemleri tamamlandıktan sonra aranabilir vektör alanı olan bir dizininiz olmalıdır. Alanın JSON tanımı şöyle görünür:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
Ayrıca aşağıdaki örneğe benzer bir vektör profiliniz ve vektörleştiriciniz olmalıdır:
"profiles": [ { "name": "vector-nasa-ebook-text-profile", "algorithm": "vector-nasa-ebook-text-algorithm", "vectorizer": "vector-nasa-ebook-text-vectorizer" } ], "vectorizers": [ { "name": "vector-nasa-ebook-text-vectorizer", "kind": "azureOpenAI", "azureOpenAIParameters": { "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com", "deploymentId": "text-embedding-ada-002", "modelName": "text-embedding-ada-002", "apiKey": "0000000000000000000000000000000000000", "authIdentity": null }, "customWebApiParameters": null } ]
Sorgu yürütme sırasında vektörleştiricinizi metinden vektöre dönüştürme için test etmek için ileri atlayın.
Vektörleştirici ve vektör profili tanımlama
Bu bölümde, vektörleştiriciyi el ile tanımlamak için dizin şemasında yapılan değişiklikler açıklanmaktadır.
Arama dizinine eklemek
vectorizers
için Dizin Oluştur veya Güncelleştir'i kullanın.Dizin tanımınıza aşağıdaki JSON'ı ekleyin. Vektörleştiriciler bölümü, dağıtılan bir ekleme modeline bağlantı bilgileri sağlar. Bu adım, bir Azure OpenAI ekleme modelini ve özel bir web API'sini yan yana karşılaştırabilmeniz için iki vektörleştirici örneği gösterir.
"vectorizers": [ { "name": "my_azure_open_ai_vectorizer", "kind": "azureOpenAI", "azureOpenAIParameters": { "resourceUri": "https://url.openai.azure.com", "deploymentId": "text-embedding-ada-002", "modelName": "text-embedding-ada-002", "apiKey": "mytopsecretkey" } }, { "name": "my_custom_vectorizer", "kind": "customWebApi", "customVectorizerParameters": { "uri": "https://my-endpoint", "authResourceId": " ", "authIdentity": " " } } ]
Aynı dizinde, vektörleştiricilerinizden birini belirten bir vektör profilleri bölümü ekleyin. Vektör profilleri ayrıca gezinti yapıları oluşturmak için kullanılan bir vektör arama algoritması gerektirir.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Vektör alanına vektör profili atayın. Aşağıdaki örnekte gerekli anahtar alanı, başlık dizesi alanı ve vektör profili ataması olan iki vektör alanı içeren bir alan koleksiyonu gösterilmektedir.
"fields": [ { "name": "ID", "type": "Edm.String", "key": true, "sortable": true, "analyzer": "keyword" }, { "name": "title", "type": "Edm.String" }, { "name": "vector", "type": "Collection(Edm.Single)", "dimensions": 1536, "vectorSearchProfile": "my_vector_profile", "searchable": true, "retrievable": true }, { "name": "my-second-vector", "type": "Collection(Edm.Single)", "dimensions": 1024, "vectorSearchProfile": "my_vector_profile", "searchable": true, "retrievable": true } ]
Vektörleştiriciyi test edin
Vektörleştirici aracılığıyla sorgu göndermek için bir arama istemcisi kullanın. Bu örnekte, REST istemcisi ve örnek dizin içeren Visual Studio Code varsayılır.
Visual Studio Code'da bir arama uç noktası ve arama sorgusu API'si anahtarı sağlayın:
@baseUrl: @queryApiKey: 00000000000000000000000
Vektör sorgusu isteğine yapıştırın.
### Run a query POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2024-07-01 HTTP/1.1 Content-Type: application/json api-key: {{queryApiKey}} { "count": true, "select": "title,chunk", "vectorQueries": [ { "kind": "text", "text": "what cloud formations exists in the troposphere", "fields": "vector", "k": 3, "exhaustive": true } ] }
Sorguyla ilgili önemli noktalar şunlardır:
"kind": "text"
arama altyapısına girişin bir metin dizesi olduğunu ve arama alanıyla ilişkili vektörleştiriciyi kullanmasını bildirir."text": "what cloud formations exists in the troposphere"
vektörleştirecek metin dizesidir."fields": "vector"
, sorgunun yapılacağı alanın adıdır. Sihirbaz tarafından oluşturulan örnek dizini kullanırsanız, oluşturulan vektör alanı olarak adlandırılırvector
.
İsteği gönderin. İlk sonucun en uygun olduğu üç
k
sonuç almalısınız.
Sorgu zamanında ayarlanacağı vektörleştirici özellikleri olmadığına dikkat edin. Sorgu, dizindeki vektör profili alanı ataması temelinde vektörleştirici özelliklerini okur.
Günlükleri denetleme
Arama hizmetiniz için tanılama günlüğünü etkinleştirdiyseniz, vektör alanınızda sorgu yürütmeyi onaylamak için bir Kusto sorgusu çalıştırın:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
En iyi yöntemler
Azure OpenAI vektörleştiricisi ayarlanıyorsa, Azure OpenAI ekleme becerisi için önerdiğimiz en iyi yöntemlerin aynısını göz önünde bulundurun.