Sdílet prostřednictvím


Generování embeddingů pro vyhledávací dotazy a dokumenty

Azure AI Search nehostuje vložené modely, takže jedním z vašich problémů je vytváření vektorů pro vstupy a výstupy dotazů. Můžete použít libovolný podporovaný embedding model, ale tento článek pro ilustraci předpokládá použití modelů vkládání od Azure OpenAI.

Doporučujeme integrovanou vektorizaci, která poskytuje předdefinované bloky dat a vektorizaci. Integrovaná vektorizace přebírá závislost na indexerech, sadách dovedností a integrovaných nebo vlastních dovednostech, které odkazují na model, který se spouští externě z Azure AI Search. Několik předdefinovaných dovedností ukazuje na vkládání modelů v Azure AI Foundry, díky čemuž je integrované vektorizace vaším nejjednodušším řešením pro řešení výzvy vkládání.

Pokud chcete zpracovávat bloky dat a vektorizaci sami, poskytujeme ukázky v ukázkovém úložišti , které vám ukážou, jak integrovat s jinými komunitními řešeními.

Způsob použití vložených modelů v vektorových dotazech

  • Vstupy dotazu jsou vektory nebo text nebo obrázky, které se během zpracování dotazu převedou na vektory. Předdefinované řešení ve službě Azure AI Search je použití vektorizátoru.

    Případně můžete převod zpracovat sami předáním vstupu dotazu do modelu vkládání podle vašeho výběru. Abyste se vyhnuli omezování rychlosti, můžete ve své úloze implementovat logiku opakování. Pro ukázku Pythonu jsme použili tenacity.

  • Výstupy dotazu jsou všechny odpovídající dokumenty nalezené v indexu vyhledávání. Index vyhledávání musel být dříve načten s dokumenty, které obsahují jedno nebo více vektorových polí se vkládáním. Jakýkoliv vložený model, který jste použili k indexování, použijte stejný model pro dotazy.

Vytvořte prostředky ve stejné oblasti

I když integrovaná vektorizace s vloženými modely Azure OpenAI nevyžaduje, aby prostředky byly ve stejné oblasti, může použití stejné oblasti zlepšit výkon a snížit latenci.

  1. Zkontrolujte oblasti pro model vkládání textu.

  2. Vyhledejte stejnou oblast pro Azure AI Search.

  3. Pokud chcete podporovat hybridní dotazy, které zahrnují sémantické hodnocení, nebo pokud chcete vyzkoušet integraci modelu strojového učení pomocí vlastní dovednosti v kanálu rozšiřování AI, vyberte oblast služby Azure AI Search, která tyto funkce poskytuje.

Vytvořte vektorovou reprezentaci pro improvizovaný dotaz

Následující kód Pythonu vygeneruje vložení, které můžete vložit do vlastnosti "values" vektorového dotazu.

!pip install openai

import openai

openai.api_type = "azure"
openai.api_key = "YOUR-API-KEY"
openai.api_base = "https://YOUR-OPENAI-RESOURCE.openai.azure.com"
openai.api_version = "2024-02-01"

response = openai.Embedding.create(
    input="How do I use Python in VS Code?",
    engine="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
print(embeddings)

Výstup je vektorové pole s 1 536 dimenzemi.

Volba modelu vkládání v Azure AI Foundry

Na portálu Azure AI Foundry máte možnost vytvořit vyhledávací index, když do pracovního postupu agenta přidáte znalosti. Průvodce vás provede jednotlivými kroky. Když se zobrazí výzva k zadání modelu vkládání, který vektorizuje obsah ve formátu prostého textu, můžete použít jeden z následujících podporovaných modelů:

  • vložení-textu-3-velké
  • textové zapouzdření-3-malé
  • text-embedding-ada-002
  • Cohere-embed-v3-english
  • Cohere-embed-v3-multilingual

Váš model už musí být nasazený a musíte mít oprávnění k jeho přístupu. Další informace najdete v tématu Nasazení modelů AI na portálu Azure AI Foundry.

Tipy a doporučení pro integraci modelu vložení

  • Identifikovat případy použití: Vyhodnoťte konkrétní případy použití, kdy integrace modelu vkládání funkcí vektorového vyhledávání může do vašeho řešení vyhledávání přidat hodnotu. Může se jednat o multimodální nebo odpovídající obsah obrázků s textovým obsahem, vícejazyčné vyhledávání nebo vyhledávání podobností.

  • Návrh strategie vytváření bloků dat: Modely vkládání mají omezení počtu tokenů, které mohou přijmout, což představuje požadavek na blok dat pro velké soubory. Další informace naleznete v článku Jak rozdělit velké dokumenty pro řešení vektorového vyhledávání.

  • Optimalizace nákladů a výkonu: Vektorové vyhledávání může být náročné na prostředky a podléhá maximálním limitům, proto zvažte pouze vektorizaci polí, která obsahují sémantický význam. Zmenšete velikost vektoru, abyste mohli uložit více vektorů za stejnou cenu.

  • Zvolte správný model vkládání: Vyberte vhodný model pro konkrétní případ použití, například vkládání slov pro vyhledávání na základě textu nebo vkládání obrázků pro vizuální vyhledávání. Zvažte použití předem natrénovaných modelů, jako je vkládání textu ada-002 z rozhraní OpenAI nebo rozhraní REST API pro načítání obrázků z Azure AI Počítačové zpracování obrazu.

  • Normalizovat délky vektorů: Před uložením vektoru do indexu vyhledávání zajistěte, aby se zlepšila přesnost a výkon vyhledávání podobnosti. Většina předem natrénovaných modelů je už normalizována, ale ne všechny.

  • Vyladění modelu: V případě potřeby vylaďte vybraný model na datech specifických pro vaši doménu, abyste zlepšili jeho výkon a relevanci pro vaši vyhledávací aplikaci.

  • Testování a iterace: Průběžně testujte a upřesněte integraci modelu vkládání, abyste dosáhli požadovaného výkonu vyhledávání a spokojenosti uživatelů.

Další kroky