Questo esempio eseguibile in TypeScript dimostra come LangChain.js si connette a Oracle AI Database tramite OracleVS, dalla carica dei documenti al recupero con filtraggio dei metadati, fino a una risposta fondata. L'applicazione React invia domande a un'API Hono, dove LangChain.js e OracleVS recuperano le prove da Oracle AI Database utilizzando ricerca per similarità, filtri sui metadati o MMR. L'eventuale passaggio LLM genera una risposta fondata; senza una chiave API, l'applicazione restituisce una risposta estrattiva.

Punti chiave

Un'applicazione TypeScript può utilizzare Oracle AI Database come vettore LangChain.js tramite OracleVS.

L'app mantiene i frammenti di documento, gli embedding vettoriali nativi e i metadati JSON in una tabella Oracle.

Ricerca per similarità, punteggi di distanza, filtri sui metadati e MMR sono decisioni di recupero alternative sullo stesso archivio.

L'API Hono mantiene separati il recupero e la generazione delle risposte, quindi il sistema può funzionare con o senza una chiave LLM.

La vista Tabella Oracle consente ai sviluppatori di ispezionare la tabella, le colonne, il conteggio delle righe, i metadati dell'indice vettoriale e l'anteprima del vettore di query.

Le stesse interfacce LangChain.js possono essere utilizzate da JavaScript o TypeScript; questa applicazione utilizza TypeScript per il servizio e i confini del pacchetto.

Perché questa integrazione è importante

Un'applicazione RAG ha bisogno di più di una funzione di similarità vettoriale. Ha bisogno di un corpus duraturo, attribuzione della fonte, confini dei metadati, controlli operativi e un modo per ispezionare perché un risultato è stato selezionato. Quando queste preoccupazioni sono diffuse tra sistemi non correlati, uno sviluppatore deve unire i risultati vettoriali ai record che li governano.

Oracle AI Database fornisce uno strato di recupero nativo del database in cui il testo dell'applicazione, gli embedding vettoriali, i metadati JSON, i dati relazionali e i controlli del database possono vivere insieme. OracleVS mantiene il codice dell'applicazione nel modello di programmazione LangChain.js mentre il database rimane il sistema di registrazione per il materiale recuperato.

Questa combinazione è utile per gli assistenti per sviluppatori e i flussi di lavoro degli agenti. Un filtro di categoria, prodotto, inquilino, pubblico, fonte o priorità può limitare quali frammenti sono idonei prima che una risposta venga assemblata. L'applicazione può quindi mostrare le prove selezionate e lo stato del database invece di presentare una risposta generata come risultato non spiegato.

Come i pezzi si incastrano

Strato Ruolo

    • React + Vite web app: Raccoglie la domanda, la categoria, il top K e la modalità di recupero. Visualizza tracce, prove, risposte e ispezioni Oracle.
    • API Hono: Espone endpoint di stato, corpus, ispezione, semina, reset e domanda per l'interfaccia utente del browser.
    • Pacchetto principale LangChain.js: Carica Markdown, crea frammenti di Documenti, incorpora testo, esegue recupero, formatta prove e prepara risposte.
    • OracleVS: L'implementazione del vettore-store LangChain da @oracle/langchain-oracledb.
    • Oracle AI Database: Memorizza testo di origine, vettori nativi, metadati JSON e metadati opzionali dell'indice vettoriale in una tabella.

Cosa offre l'integrazione allo sviluppatore

LangChain.js fornisce le astrazioni rivolte all'applicazione per documenti, embedding, recupero del vettore-store, filtri sui metadati, MMR e generazione opzionale delle risposte. Oracle AI Database fornisce memorizzazione duratura, dati VECTOR nativi, metadati JSON, ricerca di distanza e ispezione del database. L'app rende questo confine visibile invece di nasconderlo dietro una singola risposta dell'assistente.

Strato di integrazione Capacità LangChain.js Implementazione in questa applicazione

    • Base di conoscenza: Documenti Markdown nei file samples/knowledge-base diventano Documenti a livello di sezione con metadati.
    • Embedding: DemoEmbeddings fornisce un embedding deterministico a 12 dimensioni TypeScript per esecuzioni locali ripetibili.
    • Vettore store: OracleVS OracleVS.fromDocuments da @oracle/langchain-oracledb memorizza i frammenti nella tabella LCJSRAG_DEMO.
    • Similarità: similaritySearchWithScore La distanza vettoriale Oracle classifica i frammenti più vicini e restituisce i loro punteggi all'interfaccia utente.
    • Filtri sui metadati: Retriever filter Il predicato opzionale di categoria restringe quali frammenti sono idonei prima della classificazione.
    • Diversità: maxMarginalRelevanceSearch MMR utilizza k, fetchK e lambda: 0.5 per bilanciare la rilevanza con un contesto meno ridondante.
    • Generazione: ChatOpenAI Un modello di chat opzionale produce una risposta citata dal contesto recuperato; senza una chiave, l'app utilizza un fallback estrattivo.
    • Ispezione: Applicazione e SQL La vista Tabella Oracle espone il conteggio delle righe, le colonne, i metadati dell'indice vettoriale e un'anteprima del vettore di query.

Il modello di connessione

L'app utilizza il driver Node.js Oracle Database tramite un pool di connessioni. Il pool viene creato nel pacchetto database e passato a OracleVS. Questo mantiene credenziali, impostazioni del portafoglio, target di connessione e ciclo di vita della sessione nello strato di accesso ai dati Node.js normale invece di mescolarli nel codice di recupero.

L'applicazione supporta due target di distribuzione. Per lo sviluppo locale, utilizzare Oracle AI Database Free, che fornisce AI Vector Search per l'esperimento, con una stringa di connessione regolare come localhost:1521/FREEPDB1. Autonomous AI Database utilizza un alias di servizio o un descrittore TCPS e normalmente aggiunge impostazioni del portafoglio. Il codice di recupero LangChain rimane lo stesso; solo la configurazione della connessione al database cambia.

Prima di eseguire l'applicazione, utilizzare uno schema dedicato con:

    • permesso di creare e eliminare le proprie tabelle di dimostrazione;
    • permesso di inserire e selezionare da quelle tabelle;
    • permesso di creare l'indice vettoriale HNSW opzionale quando ORACLECREATEVECTOR_INDEX=true.

Il recupero funziona ancora quando la creazione dell'indice vettoriale è disabilitata.

Configurazione

Prima di eseguire l'applicazione, assicurati di configurare il file .env con le seguenti variabili:

    • ORACLE_USER: Nome utente del database
    • ORACLE_PASSWORD: Password del database
    • ORACLECONNECTSTRING: Stringa di connessione al database (es. localhost:1521/FREEPDB1)
    • ORACLETABLENAME: Nome della tabella (es. LCJSRAG_DEMO)