ai_prep_search fonksiyon

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

Önemli

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.

işlevi, ai_prep_search() öğesinin yapılandırılmış çıkışını ai_parse_document RAG vektör arama ve bilgi alma sistemleri için iyileştirilmiş bir biçime dönüştürür. İşlev, her giriş belgesi için içeriği anlamsal öbeklere böler, her öbeği belge başlığı, bölüm üst bilgileri, sayfa başvuruları gibi belge düzeyi bağlamıyla zenginleştirir ve eklemeye hazır bir gösterim oluşturur.

Gereksinimler

  • Databricks Runtime 18.2 veya üzeri.
  • Sunucusuz işlem kullanıyorsanız, aşağıdakiler de gereklidir:
    • Sunucusuz ortam sürümü, gibi VARIANTözellikleri etkinleştirdiği için 3 veya üzeri olarak ayarlanmalıdır.
    • Python veya SQL kullanmalıdır. Sunucusuz ek özellikler ve sınırlamalar için bkz. Sunucusuz işlem sınırlamaları.
  • ai_prep_search İşlev Databricks not defterleri, SQL düzenleyicisi, Databricks iş akışları, işler veya Lakeflow Spark Bildirimli İşlem Hatları kullanılarak kullanılabilir.

Sözdizimi

ai_prep_search(
    parsed VARIANT,
    [options MAP<STRING, STRING>]
) RETURNS VARIANT

Argümanlar

  • parsed VARIANT: öğesinin yapılandırılmış çıkışını ai_parse_documenttemsil eden ifade.
  • options: İsteğe bağlı MAP<STRING, STRING>bir . Desteklenen anahtarlar:
    • 'version': Kullanılacak çıkış şemasının sürümü.

İadeler

VARIANT Vektör arama dizini oluşturma için biçimlendirilmiş belge öbekleri içeren bir. Çıktıdaki her satır bir giriş belgesini temsil eder.

Çıkış şeması şöyledir:

{
  "document": {
    "contents": [
      {
        "chunk_id": STRING,       // Unique identifier composed of the document ID and chunk position
        "chunk_position": INT,    // 0-based position of the chunk within the document
        "chunk_to_retrieve": STRING,  // Raw text content of the chunk
        "chunk_to_embed": STRING, // Context-enriched text prepared for embedding; see chunk_to_embed format
        "pages": [
          {
            "page_id": INT,       // Page index that this chunk appears on
            "image_uri": STRING   // Path to the page image for multi-modal retrieval
          }
        ]
      }
    ],
    "pages": [
      {
        "id": INT,           // 0-based page index
        "image_uri": STRING  // Path to the rendered page image, populated when
                             // imageOutputPath is set in ai_parse_document
      }
    ],
    "source_uri": STRING   // Source document URI
  },
  "error_status": {...}
}

Önemli

İşlev çıkış şeması major.minor biçimi kullanılarak sürümlenmiştir. Databricks, desteklenen veya varsayılan sürümü, devam eden araştırmalara göre geliştirilmiş gösterimleri yansıtacak şekilde yükseltebilir.

  • Küçük sürüm yükseltmeleri geriye dönük olarak uyumludur ve sadece yeni alanlar ekleyebilir.
  • Ana sürüm yükseltmeleri, alan eklemeleri, kaldırmalar veya yeniden adlandırmalar gibi uyumsuzluktan kaynaklanan değişiklikleri içerebilir.

chunk_to_embed biçimi

Alan, chunk_to_embed semantik arama sırasında alma kalitesini geliştirmek için belge düzeyi bağlamını öbek içeriğiyle birleştirir. Biçim:

Uyarı

Belirli bir öbek için değer içermeyen alanlar eklenir ancak boş bırakılır. Tam bileşim, alma kalitesini geliştirmek için gelecek sürümlerde güncelleştirilebilir.

The following passage represents a chunk of content from a document.
- 'Content' contains raw document text
- All other fields describe document context and hierarchical information
- For visual elements like images/charts, a summary is generated as part of 'Content'

Document Title: {doc_title}
Page Header: {page_header}
Page Footer: {page_footer}
Section Header: {section_header}
Caption: {caption}
Footnote: {footnote}
Page Number: {page_number}

Content:
{chunk_to_retrieve}

Örnekler

ai_parse_document ile zincirleme

Aşağıdaki örnek, Unity Kataloğu biriminde depolanan ham belgelerden aramaya hazır öbekler üretmek için ile zincirler ai_prep_searchai_parse_document :

WITH parsed_documents AS (
  SELECT ai_parse_document(content) AS parsed
  FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
)
SELECT ai_prep_search(parsed) AS result
FROM parsed_documents;

Vektör arama kaynak tablosu oluşturma

Aşağıdaki örnek çıktıyı tek tek öbek satırlarına düzleştirir ve bir Delta tablosuna yazar. Daha sonra tablo, ekleme sütunu ve birincil anahtar olarak kullanılarak chunk_to_embedchunk_id dizini için kaynak olarak kullanılabilir.

WITH parsed_documents AS (
  SELECT ai_parse_document(content) AS parsed
  FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
),
prepped_documents AS (
  SELECT ai_prep_search(parsed) AS result
  FROM parsed_documents
)
SELECT
  chunk.value:chunk_id::STRING AS chunk_id,
  chunk.value:chunk_position::INT AS chunk_position,
  chunk.value:chunk_to_retrieve::STRING AS chunk_to_retrieve,
  chunk.value:chunk_to_embed::STRING AS chunk_to_embed,
  prepped_documents.result:document.source_uri::STRING AS source_uri
FROM
  prepped_documents,
  LATERAL variant_explode(prepped_documents.result:document.contents) AS chunk;

Sonuçta elde edilen satırlar aşağıdaki şemaya sahiptir:

Sütun adı Türü
chunk_id STRING
chunk_position INT
chunk_to_retrieve STRING
chunk_to_embed STRING
source_uri STRING

Çoklu kalıcı alma özelliğini etkinleştirme

seçeneğiyle ai_parse_document çağrıldığındaimageOutputPath, işlenen sayfa görüntüleri bir Unity Kataloğu birimine kaydedilir ve her öbeğin image_uripages dizisindeki alan doldurulur. Bu görüntü başvuruları, metinde tam olarak temsil edilmeyen blok diyagramları, grafikler veya tablolar gibi görsel bağlam gerektiren soruları yanıtlamak için sorgu zamanında görüntü özellikli bir modele geçirilebilir.

WITH parsed_documents AS (
  SELECT ai_parse_document(
    content,
    map(
      'imageOutputPath', '/Volumes/catalog/schema/volume/page_images/',
      'descriptionElementTypes', '*'
    )
  ) AS parsed
  FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
),
prepped_documents AS (
  SELECT ai_prep_search(parsed) AS result
  FROM parsed_documents
)
SELECT
  chunk.value:chunk_id::STRING AS chunk_id,
  chunk.value:chunk_to_embed::STRING AS chunk_to_embed,
  chunk.value:pages AS pages
FROM
  prepped_documents,
  LATERAL variant_explode(prepped_documents.result:document.contents) AS chunk;

Sınırlamalar

  • İşlev giriş ai_prep_search olarak geçerli ai_parse_document bir çıkış gerektirir. Diğer VARIANT verilerin veya desteklenmeyen bir şema sürümünün geçirilmesi beklenmeyen sonuçlara veya hatalara neden olabilir.
  • Maksimum giriş boyutu, en büyük çıkış boyutuyla tutarlıdır ai_parse_document.