Ricerca con Jev e Milvus
La ricerca vettoriale individua le informazioni correlate a una query. La creazione di un'applicazione di ricerca utile comporta anche delle decisioni: quali passaggi rispondono effettivamente alla domanda, se una risposta precedente possa essere riutilizzata e se un agente disponga di prove sufficienti per interrompere la ricerca.
Milvus e Jev si occupano di diverse parti di questo flusso di lavoro. Milvus memorizza gli embedding e recupera i record candidati, utilizzando filtri basati sui metadati per applicare vincoli quali la versione del prodotto o l’ambito della base di conoscenza. Jev valuta il significato del testo recuperato alla luce delle istruzioni. La vostra applicazione può utilizzare le sue valutazioni per selezionare le prove o controllare la fase successiva della ricerca.
Cosa fa Jev?
Una richiesta a Jev fornisce il contesto e una o più domande di valutazione. I suoi output tipizzati includono una scelta tra opzioni fisse, un punteggio ordinato e una probabilità sì/no. Questi output consentono al codice dell’applicazione di prendere una decisione senza dover analizzare una spiegazione in formato libero. Un modello di generazione può comunque scrivere una risposta o una query di ricerca di approfondimento quando necessario.
Ad esempio, un utente chiede come installare Atlas v2. Milvus può limitare il recupero alla documentazione della v2 e restituire passaggi simili relativi all’installazione, agli aggiornamenti e alla risoluzione dei problemi. Jev valuta quindi quali passaggi spiegano la configurazione iniziale. L’applicazione trasmette le prove selezionate a un modello di generazione delle risposte.
Le responsabilità sono chiare:
- Ricerca con Milvus: individuare i candidati entro i vincoli dei metadati richiesti.
- Valutare con Jev: valutare tali candidati in base alla domanda e a un criterio specifico per l’attività.
- Agire nel codice dell’applicazione: riordinare i risultati, filtrare il contesto, riutilizzare una risposta o continuare la ricerca.
Alcune decisioni vengono prese prima del recupero. Jev può scegliere un ambito di ricerca o valutare i documenti in arrivo prima che entrino in una raccolta. Il controllo degli accessi e i filtri esatti rimangono di competenza dell’applicazione.
Esplora gli scenari di ricerca
La raccolta “Ricerca con Jev” contiene nove tutorial eseguibili. Ciascuno utilizza un piccolo set di dati sintetico e mostra i record recuperati, le valutazioni e l’azione risultante.
Selezionare prove migliori
- Riorganizza i risultati della ricerca: riordina la documentazione e i ricordi degli agenti di codifica. Un ricordo relativo a un errore della porta di un laptop potrebbe assomigliare a un problema di connessione del container; un ricordo più utile registra la soluzione effettiva del problema tra container e host.
- Filtra il contesto recuperato: distingue le istruzioni di installazione iniziale dai passaggi relativi all’aggiornamento e alla risoluzione dei problemi dopo che Milvus ha applicato il filtro di versione.
- Riorganizza le relazioni del grafico: rispondi a una domanda sul luogo di nascita dell’autore di un libro selezionando sia il collegamento libro-autore che la relazione autore-luogo di nascita, quindi mantieni tale classificazione durante il recupero dei passaggi di origine.
Controllare la ricerca e il riutilizzo delle risposte
- Decidere quando interrompere la ricerca: un modello di generazione propone ricerche sulla base delle prove accumulate, mentre Jev valuta se la domanda originale sia risolvibile. Gli esempi includono una risposta diretta, una domanda a due passaggi e un fatto non disponibile che raggiunge il limite di ricerca senza una risposta.
- Indirizzare le query di ricerca: selezionare la ricerca nella documentazione, nella fatturazione o nella memoria, quindi applicare il filtro Milvus corrispondente. Una query fuori dall’ambito segue un percorso separato.
- Convalidare il riutilizzo della cache semantica: recuperare una richiesta simile memorizzata nella cache, quindi verificare se la sua risposta soddisfa anche i requisiti di attività, linguaggio e contesto della nuova richiesta.
Migliorare e ispezionare la pipeline di conoscenza
- Curare i documenti prima dell’indicizzazione: distinguere le linee guida operative sostanziali dal materiale promozionale o incompleto, con azioni separate di indicizzazione, revisione ed esclusione.
- Esaminare i passaggi recuperati: identificare il testo che cerca di fuorviare un assistente, pur mantenendo i normali consigli di sicurezza. Si tratta di una fase di screening aggiuntiva, non di una garanzia di sicurezza.
- Valutare le prove della ricerca: giudicare la rilevanza dei passaggi, se le prove sono sufficienti e se una risposta contiene affermazioni non supportate. Gli esempi rimuovono deliberatamente le prove o aggiungono un'affermazione non supportata per rendere visibile la distinzione.
Un'interfaccia di riclassificazione pronta all'uso
Milvus Model fornisce un’ JevRerankFunction a a livello di applicazione: si inviano una query e i testi dei documenti candidati, ricevendo in cambio i risultati ponderati con i loro indici originali, ordinati per rilevanza. Utilizzare tali indici per riordinare i record restituiti da Milvus.
L’integrazione con Jev è stata incorporata. Consultare l’implementazione e le opzioni del costruttore per l’API attuale. Accetta ` TYPESAFE_API_KEY ` e imposta come valore predefinito ` jev-latest`. Utilizzare una versione del pacchetto che includa questa integrazione.
L’attuale wrapper utilizza un prompt di rilevanza basato su "affermazione e prova". Verifica che questo criterio sia adatto al tuo compito. Per valutazioni personalizzate quali la compatibilità della memoria, l’interruzione o l’instradamento, segui i tutorial collegati utilizzando direttamente l’API TypeSafe. I tutorial mostrano chiamate dirette all’API dal codice dell’applicazione Python.
Provalo con Milvus
Apri il tutorial sul reranking in Colab per iniziare con il recupero e il ranking dei candidati. Per la configurazione locale e l’elenco completo dei tutorial, consulta il README della raccolta.
Gli esempi utilizzano una chiave API Gemini per gli embedding e una chiave API TypeSafe per Jev. Anche il tutorial sulla ricerca agentica utilizza Gemini per la generazione di query e risposte. Il testo di esempio viene inviato a questi fornitori di API e le chiamate potrebbero consumare crediti.
I tutorial vengono eseguiti di default con Milvus Lite e includono opzioni di connessione per un server Milvus o Zilliz Cloud. La stessa divisione dei compiti si applica a tutte le implementazioni: Milvus recupera i candidati e l’applicazione invia il testo pertinente a Jev per la valutazione.
Considerate gli esempi come punti di partenza per definire i vostri criteri e le vostre soglie. Un punteggio di rilevanza non garantisce che una risposta sia corretta e questi piccoli set di dati didattici non stabiliscono l’accuratezza o la velocità in ambiente di produzione.
Esplora le implementazioni e i risultati della valutazione
I seguenti progetti open-source applicano queste idee a flussi di lavoro di ricerca più ampi. I relativi rapporti, accessibili tramite i link, spiegano i set di dati, i confronti e i limiti di ciascun esperimento.
| Progetto | Caso d’uso della ricerca | Lavoro di Jev |
|---|---|---|
| MemSearch | Memoria Markdown persistente per agenti di codifica | Implementazione di Jev · Valutazione |
| Grafo vettoriale RAG | Recupero vettoriale e grafico per domande multi-hop | Implementazione Jev · Valutazione |
| DeepSearcher | Ricerca iterativa su conoscenze private | Esecutore di esperimenti · Valutazione dell’interruzione della ricerca (esperimento autonomo) |
| GPTCache | Riutilizzo delle risposte alle richieste compatibili | Implementazione Jev · Valutazione |
Il contributo di DeepSearcher consiste in un esperimento autonomo di interruzione della ricerca. Gli altri link alle implementazioni mostrano integrazioni di Jev specifiche per determinati compiti. I risultati di questi progetti dovrebbero essere interpretati nel loro contesto di valutazione specifico, piuttosto che essere considerati come un benchmark condiviso.