-
[LlamaIndex] Storing카테고리 없음 2024. 1. 22. 16:24
데이터를 로드하고 Indexing한 후에는 다시 Indexing하는 데 드는 시간과 비용을 피하기 위해 해당 데이터를 저장하는 것이 좋습니다. 기본적으로 Indexing된 데이터는 메모리에만 저장됩니다.
○ 특정 경로에 저장
아래 코드는 지정된 경로에 Indexing 데이터를 저장하고 다시 불러오는 예시 입니다.
from llama_index import StorageContext, load_index_from_storage # Indexing된 데이터를 특정 경로에 저장 storage_context.persist(persist_dir="<persist_dir>") # rebuild storage context storage_context = StorageContext.from_defaults(persist_dir="<persist_dir>") # load index index = load_index_from_storage(storage_context)
○ 특정 Vector DB 사용
특정 Vector DB인 Pinecone을 사용하는 예시는 아래와 같습니다.
import pinecone from llama_index import VectorStoreIndex, SimpleDirectoryReader from llama_index.vector_stores import PineconeVectorStore # Creating a Pinecone index api_key = "api_key" pinecone.init(api_key=api_key, environment="us-west1-gcp") pinecone.create_index( "quickstart", dimension=1536, metric="euclidean", pod_type="p1" ) index = pinecone.Index("quickstart") # construct vector store vector_store = PineconeVectorStore(pinecone_index=index) # create storage context storage_context = StorageContext.from_defaults(vector_store=vector_store) # load documents documents = SimpleDirectoryReader("./data").load_data() # create index, which will insert documents/vectors to pinecone index = VectorStoreIndex.from_documents( documents, storage_context=storage_context )
데이터가 이미 로드된 기존 벡터 저장소가 있는 경우 여기에 연결하여 VectorStoreIndex다음과 같이 직접 생성할 수 있습니다.
index = pinecone.Index("quickstart") vector_store = PineconeVectorStore(pinecone_index=index) loaded_index = VectorStoreIndex.from_vector_store(vector_store=vector_store)