Moduli principali
Questa documentazione è stata tradotta automaticamente e può contenere errori. Non esitare ad aprire una Pull Request per suggerire modifiche.
LlamaIndex.TS offre diversi moduli principali, suddivisi in moduli di alto livello per iniziare rapidamente e moduli di basso livello per personalizzare i componenti chiave come desideri.
Moduli di alto livello
Documento: Un documento rappresenta un file di testo, un file PDF o un'altra porzione di dati contigui.
Nodo: Il blocco di base dei dati. Più comunemente, questi sono parti del documento suddivise in pezzi gestibili abbastanza piccoli da poter essere inseriti in un modello di embedding e LLM.
Lettore/Caricatore: Un lettore o caricatore è qualcosa che prende un documento nel mondo reale e lo trasforma in una classe Document che può quindi essere utilizzata nel tuo indice e nelle tue query. Attualmente supportiamo file di testo semplice e PDF con molti altri formati in arrivo.
Indici: gli indici memorizzano i nodi e gli embedding di quei nodi.
Motore di query: I motori di query generano la query che inserisci e restituiscono il risultato. I motori di query combinano generalmente un prompt predefinito con i nodi selezionati dal tuo indice per fornire al LLM il contesto di cui ha bisogno per rispondere alla tua query.
Motore di chat: Un motore di chat ti aiuta a costruire un chatbot che interagirà con i tuoi indici.
Modulo di basso livello
LLM: La classe LLM è un'interfaccia unificata su un grande provider di modelli di linguaggio come OpenAI GPT-4, Anthropic Claude o Meta LLaMA. Puoi sottoclassificarla per scrivere un connettore per il tuo grande modello di linguaggio.
Embedding: Un embedding è rappresentato come un vettore di numeri in virgola mobile. Il modello di embedding predefinito di OpenAI, text-embedding-ada-002, consiste in 1.536 numeri in virgola mobile. Un altro modello di embedding popolare è BERT, che utilizza 768 numeri in virgola mobile per rappresentare ogni nodo. Forniamo una serie di utilità per lavorare con gli embedding, inclusi 3 opzioni di calcolo della similarità e Maximum Marginal Relevance.
TextSplitter/NodeParser: Le strategie di divisione del testo sono estremamente importanti per l'efficacia complessiva della ricerca dell'embedding. Attualmente, sebbene abbiamo una divisione predefinita, non esiste una soluzione universale. A seconda dei documenti di origine, potresti voler utilizzare diverse dimensioni e strategie di divisione. Attualmente supportiamo la divisione per dimensione fissa, la divisione per dimensione fissa con sezioni sovrapposte, la divisione per frase e la divisione per paragrafo. Il text splitter viene utilizzato dal NodeParser per dividere i
Document
inNode
.Retriever: Il Retriever è ciò che effettivamente sceglie i Node da recuperare dall'indice. Qui, potresti voler provare a recuperare più o meno Node per query, cambiare la tua funzione di similarità o creare il tuo retriever per ogni caso d'uso specifico nella tua applicazione. Ad esempio, potresti voler avere un retriever separato per il contenuto del codice rispetto al contenuto del testo.
ResponseSynthesizer: Il ResponseSynthesizer è responsabile di prendere una stringa di query e utilizzare una lista di
Node
per generare una risposta. Questo può assumere molte forme, come iterare su tutto il contesto e affinare una risposta o costruire un albero di riassunti e restituire il riassunto principale.Storage: A un certo punto vorrai archiviare i tuoi indici, dati e vettori anziché eseguire nuovamente i modelli di embedding ogni volta. IndexStore, DocStore, VectorStore e KVStore sono astrazioni che ti consentono di farlo. Insieme, formano il StorageContext. Attualmente, ti consentiamo di persistere i tuoi embedding in file sul filesystem (o in un filesystem virtuale in memoria), ma stiamo anche aggiungendo attivamente integrazioni con Vector Databases.