ai_search functie

Van toepassing op:gemarkeerd als ja Databricks SQL gemarkeerd als ja Databricks Runtime

Important

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

De functie haalt ai_search() informatie op uit een of meer AI-zoekindexen. Gegeven een natuurlijke taalzoekopdracht en indexen geconfigureerd als kennisbronnen, genereert de functie geoptimaliseerde zoekzoekopdrachten, haalt resultaten op en dedupliceert resultaten tussen bronnen, herrangschikt ze op relevantie en geeft de meest relevante documenten terug. Standaard genereert het ook een gegrond, natuurtaalantwoord over de opgehaalde documenten.

Gebruik ai_search om operationele data op grote schaal te verrijken met relevante context, batch retrieval-augmented generation (RAG) pipelines te bouwen, of retrieval als hulpmiddel bloot te stellen aan een samengesteld AI-systeem — allemaal vanuit één SQL-functieaanroep.

Gegevensbeveiliging

Uw documentgegevens worden verwerkt binnen de Databricks-beveiligingsperimeter. Databricks slaat de parameters die aan de AI-functieaanroepen worden doorgegeven niet op, maar behoudt wel details van de uitvoering van metadata, zoals de gebruikte Databricks Runtime-versie.

Requirements

  • Databricks Runtime 18.2 of hoger.
  • Een of meer AI-zoekindexen om als kennisbronnen te gebruiken.
  • Als je Serverless compute gebruikt, moet de serverless omgevingsversie op 3 of hoger worden gezet, omdat dit functies zoals VARIANTmogelijk maakt.
  • De ai_search functie is beschikbaar via Databricks-notebooks, SQL-editor, Databricks-workflows, jobs of Spark Declarative Pipelines op Lakeflow.

Syntax

ai_search(query, knowledge_sources [, instructions] [, options])

Arguments

  • query: Een STRING- of VARIANT-expressie. De zoekopdracht in natuurlijke taal. VARIANT invoer, zoals de uitvoer van een andere AI-functie, wordt intern geserialiseerd naar een JSON-string.
  • knowledge_sources: Een VARIANT of expressie STRING met een JSON-array van kennisbronconfiguraties om te doorzoeken. Zie Knowledge source configuratie. Je kunt tot 10 kennisbronnen specificeren.
  • instructions: Een optionele STRING expressie van maximaal 4.000 tekens. Natuurtaalinstructies die het genereren van zoekopdrachten, het genereren van metadatafilters en het herrangschikken begeleiden. Bijvoorbeeld: 'Prefer official documentation over internal articles when both cover the same topic.'
  • options: Een optioneel MAP<STRING, STRING>. Ondersteunde sleutels:
    • 'version': De functieversie die gebruikt moet worden.
    • 'generate_answer': 'true' (standaard) of 'false'. Wanneer 'true', synthetiseert de functie een geaarde natuurtaal-antwoord uit de opgehaalde documenten en geeft dit terug in het answer veld. Zet op 'false' alleen documenten terugsturen.

Configuratie van kennisbron

Het knowledge_sources argument is een JSON-array. Elk element is een {type, config} envelop. Het type veld identificeert hoe ai_search het met de bron verbonden is en is gescheiden van de naam van de klantgerichte bron. Voor een AI-zoekindex zet type je het letterlijke vector_search. Het config veld bevat de bronspecifieke configuratie.

Key Required Description
type Ja Het type kennisbron. Op dit moment wordt alleen vector_search ondersteund.
config Ja Een object met de bronspecifieke configuratie. Voor vector_search, zie AI Search indexconfiguratie.

AI Search indexconfiguratie

Voor een AI-zoekindex met type ingesteld op vector_searchaccepteert de config volgende sleutels:

Key Required Description
index_name Ja De Unity Catalog drie-niveaus naam van de AI Search index, bijvoorbeeld catalog.schema.my_index.
text_col Ja De kolom in de index die de documenttekst bevat, werd teruggegeven als page_content.
doc_uri_col Ja De kolom in de index die de document-URI bevat, werd teruggegeven als doc_uri.
filter_columns No Een komma-gescheiden string of JSON-array van kolommen beschikbaar voor metadata-filtering. Wanneer deze wordt weggelaten, is de lijst afgeleid van het indexschema, met uitzondering van gereserveerde, tekst- en document-URI-kolommen.

Het volgende voorbeeld configureert één AI Search index als kennisbron:

[
  {
    "type": "vector_search",
    "config": {
      "index_name": "prod_catalog.docs.support_articles",
      "text_col": "article_body",
      "doc_uri_col": "article_url",
      "filter_columns": "product,language"
    }
  }
]

Om een AI-zoekindex te bouwen uit ruwe documenten, gebruik ai_parse_document en ai_prep_search maak zoekklare chunks in een Delta-tabel. Maak vervolgens een AI-zoekindex aan vanuit die tabel. Nadat de index online is, gebruik je de drie-niveaunaam als index_name.

Returns

A VARIANT met het volgende schema:

{
  "document": [
    {
      "page_content": STRING,  // Text content of the retrieved chunk
      "doc_uri": STRING,       // URI of the source document
      "metadata": MAP          // Additional metadata from the index
    }
  ],
  "answer": STRING             // Grounded answer synthesized from the retrieved
                               // documents, or null
}
Veld Type Description
document ARRAY Reeks teruggevonden documenten, geordend op relevantie.
document[].page_content STRING Tekstinhoud van het teruggevonden stuk.
document[].doc_uri STRING URI van het brondocument.
document[].metadata MAP Extra metadata uit de index.
answer STRING Een gegrond, natuurlijk taalantwoord gesynthetiseerd uit de teruggevonden documenten. null wanneer antwoordgeneratie is uitgeschakeld of wanneer er geen documenten worden opgehaald.

Voorbeelden

Het volgende voorbeeld doorzoekt één AI Search index en geeft gerangschikte documenten en een gegronde antwoord:

SELECT ai_search(
  'How do I configure auto-scaling for my SQL warehouse?',
  PARSE_JSON('[{
    "type": "vector_search",
    "config": {
      "index_name": "prod_catalog.docs.support_articles",
      "text_col": "article_body",
      "doc_uri_col": "article_url",
      "filter_columns": "product,language"
    }
  }]')
) AS result;

Multi-source zoekopdracht met instructies

Het volgende voorbeeld doorzoekt twee AI-zoekindexen en gebruikt instructions het om zoekopdrachten te genereren en te herrangschikken:

SELECT ai_search(
  'What are the networking requirements for serverless SQL warehouses?',
  PARSE_JSON('[
    {
      "type": "vector_search",
      "config": {"index_name": "prod_catalog.docs.public_docs", "text_col": "content", "doc_uri_col": "doc_url"}
    },
    {
      "type": "vector_search",
      "config": {"index_name": "prod_catalog.docs.internal_kb", "text_col": "body", "doc_uri_col": "source_uri"}
    }
  ]'),
  'Focus on firewall rules and VPC/VNet configuration. Prefer official documentation over internal articles when both cover the same topic.'
) AS result;

Verrijk een tabel met retrieval en een gegenereerd antwoord

Het volgende voorbeeld verrijkt elk supportticket met relevante documentatie en een voorgestelde oplossing. Omdat antwoordgeneratie standaard is ingeschakeld, is de voorgestelde resolutie direct in het answer veld beschikbaar — er is geen aparte generatiestap nodig.

SELECT
  ticket_id,
  customer_description,
  ai_search(
    customer_description,
    PARSE_JSON('[{
      "type": "vector_search",
      "config": {
        "index_name": "support.docs.product_documentation",
        "text_col": "content",
        "doc_uri_col": "doc_url"
      }
    }]'),
    'Find product documentation, known issues, and troubleshooting guides relevant to this support ticket.'
  ):answer::STRING AS suggested_resolution
FROM support.tickets.open_tickets;

Om het uitvoerformaat te beheersen of een specifiek model te gebruiken, stel 'generate_answer' je in plaats daarvan de 'false' opgehaalde documenten in en rij je ze aan ai_query .

Limitations

  • ai_search momenteel ondersteunt alleen AI Search indexen. Stel je "type": "vector_search" in voor elke kennisbron.
  • Je kunt tot 10 kennisbronnen per call specificeren.
  • Het instructions argument is beperkt tot 4.000 tekens.