Multi-Modal RAG în LlamaIndex în LlamaIndex & Data RAG

Documente Complexe și Imagini LlamaIndex 0.10.30+

Indexarea, regăsirea și corelarea simultană a textului, tabelelor financiare și diagramelor tehnice din documente complexe.

Sintaxă & invocare Python
MultiModalVectorStoreIndex.from_documents()

Marea majoritate a documentelor reale dintr-o companie (manuale de inginerie, rapoarte medicale, cataloage tehnice) transmit informația critică prin imagini, scheme și grafice, nu doar prin text. Un sistem RAG tradițional care ignoră imaginile sau extrage doar textul brut din PDF pierde peste 50% din informație.

Multi-Modal RAG în LlamaIndex abordează această provocare pe două fronturi: utilizează modele de embedding multimodal (precum CLIP sau Google Vertex Multimodal Embeddings) pentru a reprezenta imaginile și textul în același spațiu vectorial comun, și modele de limbaj multimodal (GPT-4o, Claude 3.5 Sonnet, Qwen2-VL) pentru sinteza finală.

La interogare, sistemul poate returna atât fragmente de text relevante cât și diagramele tehnice asociate, permițând modelului să inspecteze schema vizuală și să ofere răspunsuri tehnice cu precizie microscopică.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
MultiModalVectorStoreIndex Indexul specializat ce gestionează noduri textuale și noduri de imagine.
MultiModalEmbedding Modelul ce calculează vectori compatibili atât pentru șiruri de caractere cât și pentru pixeli.
ImageNode Tipul de nod LlamaIndex ce conține imaginea brută, metadatele vizuale și descrierea opțională.
MultiModalQueryEngine Motorul ce alimentează LLM-ul cu textul extras și referințele de imagine simultan.

Exemple practice și configurații

Exemplul 1: Interogarea unui catalog tehnic cu diagrame electronice în Python

Cum se inițializează indexul multimodal din LlamaIndex.

from llama_index.core.indices import MultiModalVectorStoreIndex
from llama_index.multi_modal_llms.openai import OpenAIMultiModal
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import SimpleDirectoryReader

# Citim documentele și imaginile dintr-un director comun:
documente = SimpleDirectoryReader("manuale_electronice/").load_data()

# Construim indexul multimodal:
index = MultiModalVectorStoreIndex.from_documents(documente)

# Inițializăm motorul multimodal:
llm_vizual = OpenAIMultiModal(model="gpt-4o", max_new_tokens=500)
query_engine = index.as_query_engine(multi_modal_llm=llm_vizual)

raspuns = query_engine.query("Unde este poziționată siguranța F1 în schema plăcii de bază?")
print(raspuns)

Rezultat & Impact

Modelul identifică diagrama tehnică, citește schema electronică și explică exact poziția fizică a siguranței.

Greșeli frecvente și bune practici

  • Extragerea de imagini din documente la rezoluții prea slabe (sub 300 DPI), făcând textul mărunt din tabele sau legende ilizibil pentru modelul multimodal.
  • Neglijarea costurilor pe tokeni vizuali atunci când un catalog cu mii de pagini include sute de mici imagini decorative irelevante.

Ghiduri și noțiuni înrudite