AI Search Python SDK örneği kullanımı

Bu not defteri, AI Search ile çalışmak için birincil API sağlayan AISearchClient AI Search Python SDK'sının nasıl kullanılacağını gösterir.

Alternatif olarak REST API'yi doğrudan çağırabilirsiniz.

Requirements

Bu not defteri, adlı databricks-gte-large-en bir Model Sunum uç noktasının mevcut olduğunu varsayar. Bu uç noktayı oluşturmak için Model Serving kullanarak bir GTE gömme modelini çağırma not defterine bakın.

%pip install --upgrade --force-reinstall databricks-ai-search langchain
dbutils.library.restartPython()
from databricks.ai_search.client import AISearchClient
vsc = AISearchClient()
help(AISearchClient)

Kaynak Delta tablosuna oyuncak veri kümesi yükleme

Aşağıda kaynak Delta tablosunun oluşturulması açıklanmaktadır.


# Specify the catalog and schema to use. You must have USE_CATALOG privilege on the catalog and USE_SCHEMA and CREATE_TABLE privileges on the schema.
# Change the catalog and schema here if necessary.

catalog_name = "main"
schema_name = "default"

source_table_name = "en_wiki"
source_table_fullname = f"{catalog_name}.{schema_name}.{source_table_name}"
# Uncomment this line to start from scratch.

# spark.sql(f"DROP TABLE {source_table_fullname}")
source_df = spark.read.parquet("/databricks-datasets/wikipedia-datasets/data-001/en_wikipedia/articles-only-parquet").limit(10)
display(source_df)
source_df.write.format("delta").option("delta.enableChangeDataFeed", "true").saveAsTable(source_table_fullname)
display(spark.sql(f"SELECT * FROM {source_table_fullname}"))

Uç nokta oluşturma

ai_search_endpoint_name = "ai-search-demo-endpoint"
vsc.create_endpoint(
    name=ai_search_endpoint_name,
    endpoint_type="STANDARD" # or "STORAGE_OPTIMIZED"
)
endpoint = vsc.get_endpoint(
  name=ai_search_endpoint_name)
endpoint

Dizin oluşturma

# AI Search index
vs_index = "en_wiki_index"
vs_index_fullname = f"{catalog_name}.{schema_name}.{vs_index}"

embedding_model_endpoint = "databricks-qwen3-embedding-0-6b"
index = vsc.create_delta_sync_index(
  endpoint_name=ai_search_endpoint_name,
  source_table_name=source_table_fullname,
  index_name=vs_index_fullname,
  pipeline_type='TRIGGERED',
  primary_key="id",
  embedding_source_column="text",
  embedding_model_endpoint_name=embedding_model_endpoint
)
index.describe()

Dizini alma

Dizin adını kullanarak AI Search dizin nesnesini almak için get_index() kullanın. Dizinin yapılandırma bilgilerinin özetini görmek için dizin nesnesi üzerinde de kullanabilirsiniz describe() .

index = vsc.get_index(endpoint_name=ai_search_endpoint_name, index_name=vs_index_fullname)

index.describe()
# Wait for index to come online. Expect this command to take several minutes.
import time
while not index.describe().get('status').get('detailed_state').startswith('ONLINE'):
  print("Waiting for index to be ONLINE...")
  time.sleep(5)
print("Index is ONLINE")
index.describe()

Benzer belgeleri bulmak için AI Arama Dizinini sorgula.

# Returns [col1, col2, ...]
# You can set this to any subset of the columns.
all_columns = spark.table(source_table_fullname).columns

results = index.similarity_search(
  query_text="Greek myths",
  columns=all_columns,
  num_results=2)

results
# Search with a filter. Note that the syntax depends on the endpoint type.

# Standard endpoint syntax
results = index.similarity_search(
  query_text="Greek myths",
  columns=all_columns,
  filters={"id NOT": ("13770", "88231")},
  num_results=2)

# Storage-optimized endpoint syntax
# results = index.similarity_search(
#   query_text="Greek myths",
#   columns=all_columns,
#   filters='id NOT IN ("13770", "88231")',
#   num_results=2)

results

Sonuçları LangChain belgelerine dönüştürme

Alınan ilk sütun page_content içine, geri kalanı ise metaverilere yüklenir.

from langchain_core.documents import Document
from typing import List

def convert_vector_search_to_documents(results) -> List[Document]:
  column_names = []
  for column in results["manifest"]["columns"]:
      column_names.append(column)

  langchain_docs = []
  for item in results["result"]["data_array"]:
      metadata = {}
      score = item[-1]
      # print(score)
      i = 1
      for field in item[1:-1]:
          # print(field + "--")
          metadata[column_names[i]["name"]] = field
          i = i + 1
      doc = Document(page_content=item[0], metadata=metadata)  # , 9)
      langchain_docs.append(doc)
  return langchain_docs

langchain_docs = convert_vector_search_to_documents(results)

langchain_docs

Dizini silme

vsc.delete_index(index_name=vs_index_fullname)

Örnek defter

AI Search Python SDK örneği kullanımı

Dizüstü bilgisayar al