StorageContext & Salvarea Indexului pe Disc (.persist) în LlamaIndex & Data RAG

Salvează vectorii și nodurile calculate în fișiere locale pe disc, evitând recalcularea costisitoare și lentă a embedding-urilor la fiecare repornire a aplicației.

Sintaxă & invocare Python
from llama_index.core import StorageContext, load_index_from_storage

# 1. Salvare pe disc:
index.storage_context.persist(persist_dir='./stocare_index')

# 2. Reîncărcare instantanee:
storage_context = StorageContext.from_defaults(persist_dir='./stocare_index')
index = load_index_from_storage(storage_context)

Descriere & Utilizare

În mod implicit, VectorStoreIndex.from_documents() păstrează toți vectorii doar în memoria RAM. Când scriptul Python se termină, indexul dispare, iar la următoarea rulare ar trebui să plătești și să aștepți din nou calcularea embedding-urilor.

Apelul index.storage_context.persist(persist_dir='./stocare_index') serializează pe disc 4 fișiere JSON: docstore.json (textul nodurilor), vector_store.json (vectorii matematici), index_store.json (structura indexului) și graph_store.json.

La pornirile ulterioare ale aplicației, verifici dacă folderul există și încarci indexul în mai puțin de o secundă cu load_index_from_storage().

Cum să o reții ușor

💡 Ca înghețarea unor porții de mâncare gătită: gătești o singură dată duminică (indexarea documentelor), pui caserolele la congelator (`persist`), iar în timpul săptămânii doar le încălzești în 2 minute (`load_index_from_storage`).

Opțiuni și parametri tehnici

  • StorageContext reunește referințele către Document Store, Index Store și Vector Store.
  • Metoda .persist() scrie structurile din memorie pe sistemul de fișiere local (sau într-un bucket S3 / GCS).
  • load_index_from_storage reconstruiește obiectul VectorStoreIndex fără niciun apel către API-ul de embedding.

Exemple practice și cazuri de utilizare

  • Tipar standard de producție: import os
    if not os.path.exists('./storage'):
    docs = SimpleDirectoryReader('./data').load_data()
    index = VectorStoreIndex.from_documents(docs)
    index.storage_context.persist('./storage')
    else:
    ctx = StorageContext.from_defaults(persist_dir='./storage')
    index = load_index_from_storage(ctx)

Sfaturi de configurare & capcane

Persistența în fișiere JSON locale este excelentă pentru până la 10.000 – 20.000 de noduri. Peste acest volum, fișierul vector_store.json devine prea mare și este recomandat să treci la ChromaVectorStore sau QdrantVectorStore.

Comenzi și ghiduri înrudite