Condividi tramite


Come creare ed eseguire query su un indice di ricerca vettoriale

Questo articolo descrive come creare ed eseguire query su un indice di ricerca vettoriale usando Mosaic AI Vector Search.

È possibile creare e gestire componenti di ricerca vettoriale, ad esempio un endpoint di ricerca vettoriale e indici di ricerca vettoriale, usando l'interfaccia utente, Python SDKo l'API REST .

Requisiti

L'autorizzazione per creare e gestire gli endpoint di ricerca vettoriali viene configurata usando gli elenchi di controllo di accesso. Consulta gli ACL per l'endpoint di ricerca vettoriale .

Installazione

Per usare l'SDK di ricerca vettoriale, è necessario installarlo nel notebook. Usare il codice seguente per installare il pacchetto:

%pip install databricks-vectorsearch
dbutils.library.restartPython()

Usare quindi il comando seguente per importare VectorSearchClient:

from databricks.vector_search.client import VectorSearchClient

Autenticazione

Vedere Protezione dei dati e autenticazione.

Creare un endpoint di ricerca vettoriale

È possibile creare un endpoint di ricerca vettoriale usando l'interfaccia utente di Databricks, Python SDK o l'API.

Creare un endpoint di ricerca vettoriale usando l'interfaccia utente

Seguire questa procedura per creare un endpoint di ricerca vettoriale usando l'interfaccia utente.

  1. Nella barra laterale sinistra fare clic su Calcolo.

  2. Fare clic sulla scheda ricerca vettoriale e fare clic su Crea.

    Creare modulo endpoint

  3. Si apre il modulo Crea un endpoint. Immettere un nome per questo endpoint.

    Creazione della finestra di dialogo per l'endpoint di ricerca vettoriale.

  4. Nel campo Tipo selezionare Standard o Ottimizzato per l'archiviazione. Vedere Opzioni endpoint.

  5. (Facoltativo) In Impostazioni avanzate, selezionare un criterio di budget. Vedi Mosaic AI Vector Search: Politiche di bilancio.

  6. Fare clic su Conferma.

Creare un endpoint di ricerca vettoriale con Python SDK

Nell'esempio seguente viene usata la funzione create_endpoint() SDK per creare un endpoint di ricerca vettoriale.

# The following line automatically generates a PAT Token for authentication
client = VectorSearchClient()

# The following line uses the service principal token for authentication
# client = VectorSearchClient(service_principal_client_id=<CLIENT_ID>,service_principal_client_secret=<CLIENT_SECRET>)

client.create_endpoint(
    name="vector_search_endpoint_name",
    endpoint_type="STANDARD" # or "STORAGE_OPTIMIZED"
)

Creare un endpoint di ricerca vettoriale usando l'API REST

Consultare la documentazione di riferimento dell'API REST: POST /api/2.0/vector-search/endpoints.

(Facoltativo) Creare e configurare un endpoint per gestire il modello di incorporamento

Se si sceglie di usare databricks per calcolare gli incorporamenti, è possibile usare un endpoint delle API del modello di base preconfigurato o creare un endpoint di gestione di un modello per gestire il modello di incorporamento preferito. Per istruzioni, vedere API modello di base con pagamento in base al token o Creare un modello di base che gestisce gli endpoint. Per esempi di notebook, consultare gli esempi per chiamare un modello di embedding.

Quando configuri un endpoint di embedding, Databricks consiglia di rimuovere la selezione predefinita di Riduci a zero. Gli endpoint di servizio possono richiedere un paio di minuti per scaldarsi, e la query iniziale su un indice con un endpoint ridimensionato può andare in timeout.

Nota

L'inizializzazione dell'indice di ricerca vettoriale potrebbe scadere se l'endpoint di incorporamento non è configurato in modo appropriato per il set di dati. È consigliabile usare solo endpoint CPU per set di dati e test di piccole dimensioni. Per set di dati di dimensioni maggiori, usare un endpoint GPU per ottenere prestazioni ottimali.

Creare un indice di ricerca vettoriale

È possibile creare un indice di ricerca vettoriale usando l'interfaccia utente, Python SDK o l'API REST. L'interfaccia utente è l'approccio più semplice.

Esistono due tipi di indici:

  • indice di sincronizzazione delta sincronizza automaticamente con una tabella delta di origine, aggiornando automaticamente e in modo incrementale l'indice man mano che cambiano i dati sottostanti nella tabella Delta.
  • Direct Vector Access Index supporta la lettura diretta e scrittura di vettori e metadati. L'utente è responsabile dell'aggiornamento di questa tabella usando l'API REST o Python SDK. Questo tipo di indice non può essere creato usando l'interfaccia utente. È necessario usare l'API REST o l'SDK.

Nota

Il nome _id della colonna è riservato. Se la tabella di origine contiene una colonna denominata _id, rinominarla prima di creare un indice di ricerca vettoriale.

Creare un indice usando l'interfaccia utente

  1. Nella barra laterale sinistra fare clic su Catalogo per aprire l'interfaccia utente di Esplora cataloghi.

  2. Passare alla tabella Delta da usare.

  3. Fare clic sul pulsante crea in alto a destra e selezionare Indice di Ricerca Vettoriale dal menu a discesa.

    Crea pulsante indice

  4. Usare i selettori nella finestra di dialogo per configurare l'indice.

    Finestra di dialogo Crea indice

    Nome: Nome da usare per la tabella online nel Catalogo Unity. Il nome richiede un namespace a tre livelli, <catalog>.<schema>.<name>. Sono consentiti solo caratteri alfanumerici e caratteri di sottolineatura.

    chiave primaria: colonna da usare come chiave primaria.

    Endpoint: selezionare l'endpoint di ricerca vettoriale da usare.

    Colonne da sincronizzare: (supportato solo per gli endpoint standard). Selezionare le colonne da sincronizzare con l'indice vettoriale. Se si lascia vuoto questo campo, tutte le colonne della tabella di origine vengono sincronizzate con l'indice. La colonna chiave primaria e la colonna di origine di incorporamento o la colonna vettoriale di incorporamento vengono sempre sincronizzate. Per gli endpoint ottimizzati per l'archiviazione, tutte le colonne della tabella di origine vengono sempre sincronizzate.

    Fonte di embedding: Indicare se si vuole che Databricks calcoli gli embedding per una colonna di testo nella tabella Delta (Calcolare embedding) o se la tabella Delta contiene embedding precompilati (Utilizzare la colonna di embedding esistente).

    • Se hai selezionato calcolare incorporamenti, seleziona la colonna per cui desideri calcolare gli incorporamenti e l'endpoint che serve il modello di incorporamento. Sono supportate solo le colonne di testo. Per la generazione di incorporamenti su larga scala, Databricks consiglia di usare il modello databricks-gte-large-en di base con pagamento per token per una maggiore velocità effettiva.
    • Se è stata selezionata Usa colonna di embedding esistente, selezionare la colonna contenente gli embedding precomputati e la dimensione di embedding. Il formato della colonna di incorporamento pre-calcolata deve essere array[float]. Per gli endpoint ottimizzati per l'archiviazione, la dimensione di incorporamento deve essere divisibile in modo uniforme per 16.

    Sincronizza gli embeddings calcolati: Attiva o disattiva questa impostazione per salvare gli embeddings generati in una tabella del catalogo Unity. Per ulteriori informazioni, vedere Tabella di embedding generata.

    modalità di sincronizzazione: continua mantiene la sincronizzazione dell'indice con i secondi di latenza. Tuttavia, è associato a costi più elevati poiché viene effettuato il provisioning di un cluster di calcolo per eseguire la pipeline di streaming di sincronizzazione continua. Per gli endpoint standard, sia continuous che triggered eseguono aggiornamenti incrementali, quindi vengono elaborati solo i dati modificati dall'ultima sincronizzazione. Per gli endpoint ottimizzati per l'archiviazione, ogni sincronizzazione ricompila completamente l'indice di ricerca vettoriale. Vedere Limitazioni degli endpoint ottimizzati per l'archiviazione.

    Con la modalità di sincronizzazione attivata con , utilizzare il Python SDK o l'API REST per avviare la sincronizzazione. Consultare Aggiornare un indice di sincronizzazione delta.

    Per gli endpoint ottimizzati per l'archiviazione, è supportata solo la modalità di sincronizzazione attivata .

  5. Al termine della configurazione dell'indice, fare clic su Crea.

Creare un indice con Python SDK

Nell'esempio seguente viene creato un indice di sincronizzazione Delta con embedding calcolati da Databricks. Per informazioni dettagliate, vedere le informazioni di riferimento su Python SDK.

client = VectorSearchClient()

index = client.create_delta_sync_index(
  endpoint_name="vector_search_demo_endpoint",
  source_table_name="vector_search_demo.vector_search.en_wiki",
  index_name="vector_search_demo.vector_search.en_wiki_index",
  pipeline_type="TRIGGERED",
  primary_key="id",
  embedding_source_column="text",
  embedding_model_endpoint_name="e5-small-v2"
)

Nell'esempio seguente viene creato un indice Delta Sync con incorporamenti autogestiti. Questo esempio mostra anche l'uso del parametro facoltativo columns_to_sync per selezionare solo un subset di colonne da utilizzare nell'indice.

client = VectorSearchClient()

index = client.create_delta_sync_index(
  endpoint_name="vector_search_demo_endpoint",
  source_table_name="vector_search_demo.vector_search.en_wiki",
  index_name="vector_search_demo.vector_search.en_wiki_index",
  pipeline_type="TRIGGERED",
  primary_key="id",
  embedding_dimension=1024,
  embedding_vector_column="text_vector"
)

Per impostazione predefinita, tutte le colonne della tabella di origine vengono sincronizzate con l'indice.

In endpoint standard è possibile selezionare un subset di colonne da sincronizzare usando columns_to_sync. La chiave primaria e le colonne di incorporazione sono sempre incluse nell'indice.

Per sincronizzare solo la chiave primaria e la colonna di incorporamento, è necessario specificarli in columns_to_sync come illustrato:

index = client.create_delta_sync_index(
  ...
  columns_to_sync=["id", "text_vector"] # to sync only the primary key and the embedding column
)

Per sincronizzare colonne aggiuntive, specificarle come illustrato. Non è necessario includere la chiave primaria e la colonna embedding, perché vengono sempre sincronizzate.

index = client.create_delta_sync_index(
  ...
  columns_to_sync=["revisionId", "text"] # to sync the `revisionId` and `text` columns in addition to the primary key and embedding column.
)

Nell'esempio seguente viene creato un indice di accesso a vettori diretti.


client = VectorSearchClient()

index = client.create_direct_access_index(
  endpoint_name="storage_endpoint",
  index_name=f"{catalog_name}.{schema_name}.{index_name}",
  primary_key="id",
  embedding_dimension=1024,
  embedding_vector_column="text_vector",
  schema={
    "id": "int",
    "field2": "string",
    "field3": "float",
    "text_vector": "array<float>"}
)

Creare un indice usando l'API REST

Consulta la documentazione di riferimento dell'API REST: POST /api/2.0/vector-search/indexes.

Salva tabella di incorporamento generata

Se Databricks genera gli incorporamenti, è possibile salvare gli incorporamenti generati in una tabella in Unity Catalog. Questa tabella viene creata nello stesso schema dell'indice vettoriale ed è collegata dalla pagina dell'indice vettoriale.

Il nome della tabella è il nome dell'indice di ricerca vettoriale, aggiunto da _writeback_table. Il nome non è modificabile.

È possibile accedere ed eseguire query sulla tabella come su qualsiasi altra tabella nel Catalogo Unity. Tuttavia, non è consigliabile eliminare o modificare la tabella, perché non deve essere aggiornata manualmente. La tabella viene eliminata automaticamente se l'indice viene eliminato.

Aggiornare un indice di ricerca vettoriale

Aggiornare un Indice di Sincronizzazione Delta

Gli indici creati con la modalità di sincronizzazione continua si aggiornano automaticamente quando cambia la tabella Delta di origine. Se si usa la modalità di sincronizzazione attivata , è possibile avviare la sincronizzazione usando l'interfaccia utente, Python SDK o l'API REST.

Interfaccia utente di Databricks

  1. In Esplora cataloghi passare all'indice di ricerca vettoriale.

  2. Nella sezione Inserimento dati della scheda Panoramica fare clic su Sincronizza.

    Sincronizza ora il pulsante per sincronizzare un indice di ricerca vettoriale da Esplora cataloghi.

Python SDK

Per informazioni dettagliate, vedere le informazioni di riferimento su Python SDK.

client = VectorSearchClient()
index = client.get_index(index_name="vector_search_demo.vector_search.en_wiki_index")

index.sync()

REST API (Interfaccia di Programmazione delle Applicazioni REST)

Consultare la documentazione di riferimento dell'API REST: POST /api/2.0/vector-search/indexes/{index_name}/sync.

Aggiornare un indice di accesso diretto ai vettori

È possibile usare Python SDK o l'API REST per inserire, aggiornare o eliminare dati da un indice di accesso a vettori diretti.

Python SDK

Per informazioni dettagliate, vedere le informazioni di riferimento su Python SDK.

index.upsert([
    {
        "id": 1,
        "field2": "value2",
        "field3": 3.0,
        "text_vector": [1.0] * 1024
    },
    {
        "id": 2,
        "field2": "value2",
        "field3": 3.0,
        "text_vector": [1.1] * 1024
    }
])

REST API (Interfaccia di Programmazione delle Applicazioni REST)

Consulta la documentazione di riferimento dell'API REST: POST /api/2.0/vector-search/indexes.

Per le applicazioni di produzione, Databricks consiglia di usare principali di servizio anziché token di accesso personali. Le prestazioni possono essere migliorate di fino a 100 millisecondi per ogni query.

Nell'esempio di codice seguente viene illustrato come aggiornare un indice usando un'entità servizio.

export SP_CLIENT_ID=...
export SP_CLIENT_SECRET=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...
export WORKSPACE_ID=...

# Set authorization details to generate OAuth token
export AUTHORIZATION_DETAILS='{"type":"unity_catalog_permission","securable_type":"table","securable_object_name":"'"$INDEX_NAME"'","operation": "WriteVectorIndex"}'

# Generate OAuth token
export TOKEN=$(curl -X POST --url $WORKSPACE_URL/oidc/v1/token -u "$SP_CLIENT_ID:$SP_CLIENT_SECRET" --data 'grant_type=client_credentials' --data 'scope=all-apis' --data-urlencode 'authorization_details=['"$AUTHORIZATION_DETAILS"']' | jq .access_token | tr -d '"')

# Get index URL
export INDEX_URL=$(curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME | jq -r '.status.index_url' | tr -d '"')

# Upsert data into vector search index.
curl -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/upsert-data --data '{"inputs_json": "[...]"}'

# Delete data from vector search index
curl -X DELETE -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/delete-data --data '{"primary_keys": [...]}'

Nell'esempio di codice seguente viene illustrato come aggiornare un indice usando un token di accesso personale (PAT).

export TOKEN=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...

# Upsert data into vector search index.
curl -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/upsert-data --data '{"inputs_json": "..."}'

# Delete data from vector search index
curl -X DELETE -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/delete-data --data '{"primary_keys": [...]}'

Eseguire una query su un endpoint di ricerca vettoriale

È possibile eseguire query solo sull'endpoint di ricerca vettoriale usando il Python SDK, l'API REST o la funzione AI SQL vector_search().

Nota

Se l'utente che esegue query sull'endpoint non è il proprietario dell'indice di ricerca vettoriale, l'utente deve disporre dei privilegi uc seguenti:

  • USE CATALOG nel catalogo che contiene l'indice di ricerca per vettori.
  • USE SCHEMA sullo schema che contiene l'indice di ricerca vettoriale.
  • SELECT sull'indice di ricerca vettoriale.

Il tipo di query predefinito è ann (vicinanza più prossima approssimativa). Per eseguire una ricerca ibrida di somiglianza con parole chiave, impostare il parametro query_type su hybrid. Con la ricerca ibrida, vengono incluse tutte le colonne di metadati di testo e vengono restituiti un massimo di 200 risultati.

Endpoint standard di Python SDK

Per informazioni dettagliate, vedere le informazioni di riferimento su Python SDK.

# Delta Sync Index with embeddings computed by Databricks
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "field2"],
    num_results=2
    )

# Delta Sync Index using hybrid search, with embeddings computed by Databricks
results3 = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "field2"],
    num_results=2,
    query_type="hybrid"
    )

# Delta Sync Index with pre-calculated embeddings
results2 = index.similarity_search(
    query_vector=[0.9] * 1024,
    columns=["id", "text"],
    num_results=2
    )

Endpoint ottimizzato per l'archiviazione nel Python SDK

Per informazioni dettagliate, vedere le informazioni di riferimento su Python SDK.

L'interfaccia filtro esistente è stata ripensata per gli indici di ricerca vettoriali ottimizzati per l'archiviazione per adottare una stringa di filtro più simile a SQL anziché il dizionario di filtri usato negli endpoint di ricerca vettoriale standard.

client = VectorSearchClient()
index = client.get_index(index_name="vector_search_demo.vector_search.en_wiki_index")

# similarity search with query vector
results = index.similarity_search(
    query_vector=[0.2, 0.33, 0.19, 0.52],
    columns=["id", "text"],
    num_results=2
)

# similarity search with query vector and filter string
results = index.similarity_search(
    query_vector=[0.2, 0.33, 0.19, 0.52],
    columns=["id", "text"],
    # this is a single filter string similar to SQL WHERE clause syntax
    filters="language = 'en' AND country = 'us'",
    num_results=2
)

REST API (Interfaccia di Programmazione delle Applicazioni REST)

Consultare la documentazione di riferimento dell'API REST: POST /api/2.0/vector-search/indexes/{index_name}/query.

Per le applicazioni di produzione, Databricks consiglia di usare principali di servizio anziché token di accesso personali. Oltre a migliorare la sicurezza e la gestione degli accessi, l'uso dei principali di servizio può migliorare le prestazioni fino a 100 msec per query.

Nell'esempio di codice seguente viene illustrato come eseguire una query su un indice usando un principale del servizio.

export SP_CLIENT_ID=...
export SP_CLIENT_SECRET=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...
export WORKSPACE_ID=...

# Set authorization details to generate OAuth token
export AUTHORIZATION_DETAILS='{"type":"unity_catalog_permission","securable_type":"table","securable_object_name":"'"$INDEX_NAME"'","operation": "ReadVectorIndex"}'
# If you are using an route_optimized embedding model endpoint, then you need to have additional authorization details to invoke the serving endpoint
# export EMBEDDING_MODEL_SERVING_ENDPOINT_ID=...
# export AUTHORIZATION_DETAILS="$AUTHORIZATION_DETAILS"',{"type":"workspace_permission","object_type":"serving-endpoints","object_path":"/serving-endpoints/'"$EMBEDDING_MODEL_SERVING_ENDPOINT_ID"'","actions": ["query_inference_endpoint"]}'

# Generate OAuth token
export TOKEN=$(curl -X POST  --url $WORKSPACE_URL/oidc/v1/token -u "$SP_CLIENT_ID:$SP_CLIENT_SECRET" --data 'grant_type=client_credentials' --data 'scope=all-apis' --data-urlencode 'authorization_details=['"$AUTHORIZATION_DETAILS"']' | jq .access_token | tr -d '"')

# Get index URL
export INDEX_URL=$(curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME | jq -r '.status.index_url' | tr -d '"')

# Query vector search index.
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/query --data '{"num_results": 3, "query_vector": [...], "columns": [...], "debug_level": 1}'

# Query vector search index.
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/query --data '{"num_results": 3, "query_text": "...", "columns": [...], "debug_level": 1}'

Nell'esempio di codice seguente viene illustrato come eseguire query su un indice usando un token di accesso personale ( PAT).

export TOKEN=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...

# Query vector search index with `query_vector`
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/query --data '{"num_results": 3, "query_vector": [...], "columns": [...], "debug_level": 1}'

# Query vector search index with `query_text`
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/query --data '{"num_results": 3, "query_text": "...", "columns": [...], "debug_level": 1}'

SQL

Importante

La funzione di intelligenza artificiale vector_search() è disponibile in anteprima pubblica.

Per usare la funzione di intelligenza artificiale , vedere la funzione vector_search.

Usare filtri per le query

Una query può definire filtri in base a qualsiasi colonna della tabella Delta. similarity_search restituisce solo le righe che corrispondono ai filtri specificati.

Nella tabella seguente sono elencati i filtri supportati.

Operatore di filtro Comportamento Esempi
NOT Standard: nega il filtro. La chiave deve terminare con "NOT". Ad esempio, "color NOT" con valore "rosso" corrisponde ai documenti in cui il colore non è rosso.
Ottimizzazione per l'archiviazione: vedere != operatore (bangeq sign).
Standard: {"id NOT": 2}{“color NOT”: “red”}
Ottimizzato per l'archiviazione: "id != 2" "color != 'red'"
< Standard: controlla se il valore del campo è minore del valore del filtro. La chiave deve terminare con " <". Ad esempio, "price <" con valore 200 corrisponde ai documenti in cui il prezzo è minore di 200.
Ottimizzazione per l'archiviazione: vedere < l'operatore (lt sign).
Standard: {"id <": 200}
Ottimizzato per l'archiviazione: "id < 200"
<= Standard: controlla se il valore del campo è minore o uguale al valore del filtro. La chiave deve terminare con " <=". Ad esempio, "price <=" con valore 200 corrisponde ai documenti in cui il prezzo è minore o uguale a 200.
Ottimizzato per lo storage: vedere <= l'operatore (segno lt eq).
Standard: {"id <=": 200}
Ottimizzato per l'archiviazione: "id <= 200"
> Standard: controlla se il valore del campo è maggiore del valore del filtro. La chiave deve terminare con " >". Ad esempio, "price >" con valore 200 corrisponde ai documenti in cui il prezzo è maggiore di 200.
Ottimizzazione per l'archiviazione: vedere > l'operatore (gt sign).
Standard: {"id >": 200}
Ottimizzato per l'archiviazione: "id > 200"
>= Standard: controlla se il valore del campo è maggiore o uguale al valore del filtro. La chiave deve terminare con " >=". Ad esempio, "price >=" con valore 200 corrisponde ai documenti in cui il prezzo è maggiore o uguale a 200.
Ottimizzato per l'archiviazione: vedi >= l'operatore (gt eq sign).
Standard: {"id >=": 200}
Ottimizzato per l'archiviazione: "id >= 200"
OR Standard: controlla se il valore del campo corrisponde a uno dei valori del filtro. La chiave deve contenere OR per separare più sottochiavi. Ad esempio, color1 OR color2 con valore ["red", "blue"] corrisponde ai documenti in cui color1 è red o color2 è blue.
Ottimizzazione per lo storage: consultare or l'operatore.
Standard: {"color1 OR color2": ["red", "blue"]}
Ottimizzato per l'archiviazione: "color1 = 'red' OR color2 = 'blue'"
LIKE Standard: corrisponde ai token separati da spazi vuoti in una stringa. Vedere gli esempi di codice seguenti.
Ottimizzazione per lo storage: consultare like l'operatore.
Standard: {"column LIKE": "hello"}
Ottimizzato per l'archiviazione: "column LIKE 'hello'"
Nessun operatore di filtro specificato Standard: il filtro verifica la corrispondenza esatta. Se vengono specificati più valori, corrisponde a uno qualsiasi dei valori.
Ottimizzato per l'archiviazione: Vedi l'operatore =(eq sign) e il predicato in.
Standard: {"id": 200}{"id": [200, 300]}
Ottimizzato per l'archiviazione: "id = 200""id IN (200, 300)"
to_timestamp (solo endpoint ottimizzati per l'archiviazione) Ottimizzato per l'archiviazione: filtrare in base a un timestamp. Consultare to_timestamp funzione Ottimizzato per l'archiviazione: "date > TO_TIMESTAMP('1995-01-01')"

Vedere gli esempi di codice seguenti:

Endpoint standard di Python SDK

# Match rows where `title` exactly matches `Athena` or `Ares`
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "text"],
    filters={"title": ["Ares", "Athena"]},
    num_results=2
    )

# Match rows where `title` or `id` exactly matches `Athena` or `Ares`
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "text"],
    filters={"title OR id": ["Ares", "Athena"]},
    num_results=2
    )

# Match only rows where `title` is not `Hercules`
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "text"],
    filters={"title NOT": "Hercules"},
    num_results=2
    )

Endpoint ottimizzato per l'archiviazione nel Python SDK

# Match rows where `title` exactly matches `Athena` or `Ares`
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "text"],
    filters='title IN ("Ares", "Athena")',
    num_results=2
    )

# Match rows where `title` or `id` exactly matches `Athena` or `Ares`
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "text"],
    filters='title = "Ares" OR id = "Athena"',
    num_results=2
    )

# Match only rows where `title` is not `Hercules`
results = index.similarity_search(
    query_text="Greek myths",
    columns=["id", "text"],
    filters='title != "Hercules"',
    num_results=2
    )

REST API (Interfaccia di Programmazione delle Applicazioni REST)

Vedere POST /api/2.0/vector-search/indexes/{index_name}/query.

MI PIACE

LIKE esempi

{"column LIKE": "apple"}: corrisponde alle stringhe "apple" e "apple pear", ma non corrisponde a "pineapple" o "pear". Si noti che non corrisponde a "ananas" anche se contiene una sottostringa "apple" --- cerca una corrispondenza esatta su token separati da spazi vuoti come in "pera di mela".

{"column NOT LIKE": "apple"} fa l'opposto. Corrisponde a "ananas" e "pera", ma non corrisponde a "mela" o "pera mela".

Notebook di esempio

Gli esempi in questa sezione illustrano l'uso di Python SDK per la ricerca vettoriale. Per informazioni di riferimento, vedere il riferimento del Python SDK.

Esempi di LangChain

Vedi Come utilizzare LangChain con la Ricerca Vettoriale di Mosaic AI per l'integrazione della Ricerca Vettoriale di Mosaic AI con i pacchetti LangChain.

Il notebook seguente illustra come convertire i risultati della ricerca di somiglianza in documenti LangChain.

Ricerca vettoriale con il notebook Python SDK

Prendi notebook

Notebook : esempi per chiamare un modello di embedding

I notebook seguenti illustrano come configurare un endpoint Mosaic AI Model Serving per la generazione di incorporamenti.

Chiamare un modello di embedding di OpenAI utilizzando il notebook Mosaic AI Model Serving

Prendi notebook

Chiamare un modello di embedding GTE utilizzando il notebook di Mosaic AI Model Serving.

Prendi notebook

Registrare e gestire un notebook del modello di incorporamento osS

Prendi notebook