ai_search fonksiyon

Şunun için geçerlidir:Evet olarak işaretlendi Databricks SQL Evet olarak işaretlendi Databricks Runtime

Important

Bu özellik Beta sürümündedir. Çalışma alanı yöneticileri Bu özelliğe erişimi Önizlemeler sayfasından denetleyebilir. Bkz. Azure Databricks önizlemelerini yönetme.

Bu ai_search() fonksiyon, bir veya daha fazla yapay zeka arama indeksinden bilgi alır. Doğal dil sorgusu ve bilgi kaynakları olarak yapılandırılmış indeksler verildiğinde, fonksiyon optimize edilmiş arama sorguları üretir, kaynaklar arasında sonuçları alır ve deduplicate eder, ilgiye göre yeniden sıralar ve en ilgili belgeleri döndürür. Varsayılan olarak, alınan belgeler üzerinde doğal dilde bir yanıt sentezler.

ai_search Operasyonel verileri ilgili bağlamla ölçekli ölçekte zenginleştirmek, toplu alım-artırılmış üretim (RAG) boru hatları oluşturmak veya buluşmayı bileşik yapay zeka sistemine bir araç olarak sunmak için — tüm bunlar tek bir SQL fonksiyon çağrısında.

Veri güvenliği

Belge verileriniz Databricks güvenlik çevresi içinde işlenir. Databricks, yapay zeka fonksiyon çağrılarına iletilen parametreleri saklamaz, ancak kullanılan Databricks Çalışma Zamanı versiyonu gibi metaveri çalışma detaylarını korur.

Requirements

  • Databricks Runtime 18.2 veya üzeri.
  • Bilgi kaynağı olarak kullanılmak üzere bir veya daha fazla yapay zeka arama indeksi .
  • Sunucusuz hesaplama kullanıyorsanız, sunucusuz ortam versiyonu 3 veya üzeri olarak ayarlanmalıdır, çünkü bu gibi özellikleri VARIANTetkinleştirir.
  • Bu ai_search fonksiyon, Databricks defterleri, SQL editörü, Databricks iş akışları, işler veya Lakeflow üzerindeki Spark Deklaratif Boru Hatları kullanılarak kullanılabilir.

Syntax

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

Arguments

  • query: STRING veya VARIANT ifadesi. Doğal dil arama sorgusu. VARIANT giriş, örneğin başka bir yapay zeka fonksiyonunun çıktısı, dahili olarak bir JSON dizemine seri olarak aktarılır.
  • knowledge_sources: Arama için bilgi kaynağı yapılandırmalarından oluşan JSON dizisi içeren bir VARIANT ifade STRING veya ifade. Bkz. Bilgi kaynağı yapılandırması. En fazla 10 bilgi kaynağı belirtebilirsiniz.
  • instructions: 4.000 karaktere kadar isteğe STRING bağlı bir ifade olabilir. Sorgu oluşturma, meta veri filtresi oluşturma ve yeniden sıralamayı yönlendiren doğal dil talimatları. Örneğin, 'Prefer official documentation over internal articles when both cover the same topic.'
  • options: İsteğe bağlı MAP<STRING, STRING>bir . Desteklenen anahtarlar:
    • 'version': Kullanılacak fonksiyon versiyonu.
    • 'generate_answer': 'true' (varsayılan) veya 'false'. Ne 'true'olduğunda answer , fonksiyon alınan belgelerden topraklanmış bir doğal dil cevabını sentezler ve alanda geri döndürür. Sadece belgeleri iade etmek için ayarlandı 'false' .

Bilgi kaynağı yapılandırması

Argüman knowledge_sources bir JSON dizisi. Her eleman bir {type, config} zarftır. Alan, type kaynağa nasıl ai_search bağlandığını belirler ve müşteriye yönelik kaynak adından ayrı bir konumdadır. Bir AI Arama indeksi için, type kelime harfi vector_searcholarak ayarlanın. Alan, config kaynağa özgü yapılandırmayı içerir.

Key Zorunlu Description
type Evet Bilgi kaynağı türü. Şu anda yalnızca vector_search desteklenmektedir.
config Evet Kaynağa özgü yapılandırmayı içeren bir nesne. Bunun için vector_searchbkz. AI Arama dizin yapılandırması.

AI Arama dizini yapılandırması

Bir AI Arama indeksi için typevector_searchayarlı, config aşağıdaki anahtarları kabul eder:

Key Zorunlu Description
index_name Evet Örneğin, Unity Catalog'da AI Arama indeksinin catalog.schema.my_indexüç seviyeli adı vardır.
text_col Evet Belge metnini içeren indeks sütunu olarak döner.page_content
doc_uri_col Evet Belge URI'sini içeren indeks sütunu olarak döner.doc_uri
filter_columns Hayır Meta veri filtreleme için mevcut olan virgülle ayrılmış bir dizi veya JSON sütun dizisi. Liste, kaydedilmiş, metin ve belge URI sütunları hariç olarak indeks şemasından türetilir.

Aşağıdaki örnek, bir AI Arama indeksini bilgi kaynağı olarak yapılandırıyor:

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

Ham belgelerden bir AI Arama indeksi oluşturmak için, Delta tablosunda arama hazır parçalar oluşturmak ai_parse_document için kullanın.ai_prep_search Sonra o tablodan bir AI Arama indeksi oluşturun . Indeks çevrimiçi olduktan sonra, üç seviyeli adını şu şekilde kullanın.index_name

İadeler

A VARIANT ve aşağıdaki şema:

{
  "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
}
Field Türü Description
document ARRAY Alınan belgelerin dizisi, ilgiye göre sıralanmış.
document[].page_content STRING Alınan parçanın metin içeriği.
document[].doc_uri STRING Kaynak belgenin URI'si.
document[].metadata MAP Dizinden ek meta veriler.
answer STRING Alınan belgelerden sentezlenen doğal dilde sağlam bir cevap. null cevap oluşturma devre dışı bırakıldığında veya hiçbir belge alınmadığında.

Examples

Aşağıdaki örnek, bir AI Arama dizini arar ve sıralanmış belgeler ile temelli bir yanıt getirir:

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;

Komutlarla çoklu kaynak arama

Aşağıdaki örnek, iki yapay zeka arama indeksinde arama yapar ve sorgu oluşturma ile yeniden sıralamayı yönlendirmek için kullanır instructions :

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;

Bir tabloyu geri alma ve üretilmiş bir cevabla zenginleştirin

Aşağıdaki örnek, her destek biletini ilgili dokümantasyon ve önerilen bir çözümle zenginleştirir. Cevap answer oluşturma varsayılan olarak açık olduğundan, önerilen çözüm doğrudan sahada mevcuttur — ayrı bir üretim adımı gerekmez.

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;

Çıkış formatını kontrol etmek veya belirli bir model kullanmak için, 'generate_answer''false' alınan belgeleri ayarla ve zincirleyin ai_query .

Sınırlamalar

  • ai_search Şu anda yalnızca AI Arama indekslerini destekliyor. Her bilgi kaynağı için ayarlan "type": "vector_search" .
  • Her çağrıda en fazla 10 bilgi kaynağı belirtebilirsiniz.
  • Argüman instructions 4.000 karakterle sınırlıdır.