Cerca documenti per somiglianza semantica
Endpoint di ricerca semantica con capacità di elaborazione in batch
Initiate a search operation with a query text of up to 400 words and receive the most semantically similar responses from the stored knowledge. For question-answering, convert your question into an ideal answer and submit it to receive similar real answers.
Up to 400 words sentence for which you wish to find semantically similar chunks of knowledge.
Number of semantically similar chunks of text to return. Use 'n=3' for up to 5, and 'n=10' for more information. If you do not receive enough information, consider trying again with a larger 'n' value.
GET /api/v1/documents/search/ HTTP/1.1
Host: api.rememberizer.ai
Accept: */*
{
"data": [
{
"chunk_id": "text",
"document": {
"id": 1,
"document_id": "text",
"name": "text",
"type": "text",
"path": "text",
"url": "text",
"size": "text",
"created_time": "text",
"modified_time": "text",
"integration": {
"id": 1,
"integration_type": "text",
"integration_step": "text",
"source": "text",
"document_stats": {
"status": {
"indexed": 1,
"indexing": 1,
"error": 1
},
"total_size": 1,
"document_count": 1
}
}
},
"matched_content": "text",
"distance": 1
}
],
"message": "text",
"code": "text"
}
Esempi di Richieste
curl -X GET \
"https://api.rememberizer.ai/api/v1/documents/search/?q=Come%20integrare%20Rememberizer%20con%20applicazioni%20personalizzate&n=5&from=2023-01-01T00:00:00Z&to=2023-12-31T23:59:59Z" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Parametri di Query
q
string
Obbligatorio. Il testo della query di ricerca (fino a 400 parole).
n
integer
Numero di risultati da restituire. Predefinito: 3. Usa valori più alti (ad es., 10) per risultati più completi.
from
string
Inizio dell'intervallo di tempo per i documenti da cercare, in formato ISO 8601.
to
string
Fine dell'intervallo di tempo per i documenti da cercare, in formato ISO 8601.
prev_chunks
integer
Numero di chunk precedenti da includere per il contesto. Predefinito: 2.
next_chunks
integer
Numero di chunk successivi da includere per il contesto. Predefinito: 2.
Formato di Risposta
{
"data_sources": [
{
"name": "Google Drive",
"documents": 3
},
{
"name": "Slack",
"documents": 2
}
],
"matched_chunks": [
{
"document": {
"id": 12345,
"document_id": "1aBcD2efGhIjK3lMnOpQrStUvWxYz",
"name": "Documentazione API di Rememberizer.pdf",
"type": "application/pdf",
"path": "/Documents/Rememberizer/Documentazione API.pdf",
"url": "https://drive.google.com/file/d/1aBcD2efGhIjK3lMnOpQrStUvWxYz/view",
"size": 250000,
"created_time": "2023-05-10T14:30:00Z",
"modified_time": "2023-06-15T09:45:00Z",
"indexed_on": "2023-06-15T10:30:00Z",
"integration": {
"id": 101,
"integration_type": "google_drive"
}
},
"matched_content": "Per integrare Rememberizer con applicazioni personalizzate, puoi utilizzare il flusso di autenticazione OAuth2 per autorizzare la tua applicazione ad accedere ai dati di Rememberizer di un utente. Una volta autorizzata, la tua applicazione può utilizzare le API di Rememberizer per cercare documenti, recuperare contenuti e altro ancora.",
"distance": 0.123
},
// ... più chunk corrispondenti
],
"message": "Ricerca completata con successo",
"code": "success"
}
Suggerimenti per l'Ottimizzazione della Ricerca
Per Rispondere a Domande
Quando cerchi una risposta a una domanda, prova a formulare la tua query come se fosse una risposta ideale. Ad esempio:
Invece di: "Che cos'è l'embedding vettoriale?" Prova: "L'embedding vettoriale è una tecnica che converte il testo in vettori numerici in uno spazio ad alta dimensione."
Regolazione del Conteggio dei Risultati
Inizia con
n=3
per risultati rapidi e ad alta rilevanzaAumenta a
n=10
o superiore per informazioni più completeSe la ricerca restituisce informazioni insufficienti, prova ad aumentare il parametro
n
Filtraggio Basato sul Tempo
Utilizza i parametri from
e to
per concentrarti su documenti di periodi di tempo specifici:
Documenti recenti: Imposta
from
su una data recenteAnalisi storica: Specifica un intervallo di date specifico
Escludere informazioni obsolete: Imposta una data
to
appropriata
Operazioni in Batch
Per gestire in modo efficiente grandi volumi di query di ricerca, Rememberizer supporta operazioni in batch per ottimizzare le prestazioni e ridurre il sovraccarico delle chiamate API.
Ricerca in Batch
import requests
import time
import json
from concurrent.futures import ThreadPoolExecutor
def batch_search_documents(queries, num_results=5, batch_size=10):
"""
Esegui ricerche in batch con più query
Args:
queries: Elenco di stringhe di query di ricerca
num_results: Numero di risultati da restituire per query
batch_size: Numero di query da elaborare in parallelo
Returns:
Elenco dei risultati di ricerca per ogni query
"""
headers = {
"Authorization": "Bearer YOUR_JWT_TOKEN",
"Content-Type": "application/json"
}
results = []
# Elabora le query in batch
for i in range(0, len(queries), batch_size):
batch = queries[i:i+batch_size]
# Crea un pool di thread per inviare richieste in parallelo
with ThreadPoolExecutor(max_workers=batch_size) as executor:
futures = []
for query in batch:
params = {
"q": query,
"n": num_results
}
future = executor.submit(
requests.get,
"https://api.rememberizer.ai/api/v1/documents/search/",
headers=headers,
params=params
)
futures.append(future)
# Raccogli i risultati man mano che vengono completati
for future in futures:
response = future.result()
results.append(response.json())
# Limitazione della velocità - pausa tra i batch per evitare il throttling dell'API
if i + batch_size < len(queries):
time.sleep(1)
return results
# Esempio di utilizzo
queries = [
"Come utilizzare OAuth con Rememberizer",
"Opzioni di configurazione del database vettoriale",
"Migliori pratiche per la ricerca semantica",
# Aggiungi altre query se necessario
]
results = batch_search_documents(queries, num_results=3, batch_size=5)
Considerazioni sulle Prestazioni
Quando si implementano operazioni in batch, considera queste migliori pratiche:
Dimensione Ottimale del Batch: Inizia con dimensioni del batch di 5-10 query e adatta in base alle caratteristiche di prestazione della tua applicazione.
Limitazione della Frequenza: Includi ritardi tra i batch per prevenire il throttling dell'API. Un buon punto di partenza è di 1 secondo tra i batch.
Gestione degli Errori: Implementa una gestione degli errori robusta per gestire le richieste fallite all'interno dei batch.
Gestione delle Risorse: Monitora l'uso delle risorse lato client, in particolare con grandi dimensioni del batch, per prevenire un consumo eccessivo di memoria.
Elaborazione delle Risposte: Elabora i risultati del batch in modo asincrono quando possibile per migliorare l'esperienza dell'utente.
Per applicazioni ad alto volume, considera di implementare un sistema di coda per gestire in modo efficiente un gran numero di richieste di ricerca.
Questo endpoint fornisce potenti capacità di ricerca semantica in tutta la tua base di conoscenza. Utilizza embedding vettoriali per trovare contenuti basati sul significato piuttosto che su corrispondenze esatte di parole chiave.
Last updated