from llama_index.core import ( VectorStoreIndex, SimpleDirectoryReader, StorageContext, load_index_from_storage, ) from llama_index.core.node_parser import SentenceSplitter docs = SimpleDirectoryReader("./docs").load_data() nodes = SentenceSplitter(chunk_size=512, chunk_overlap=64).get_nodes_from_documents(docs) index = VectorStoreIndex(nodes) index.storage_context.persist("./storage") # embedding once is the expensive part engine = index.as_query_engine( similarity_top_k=5, response_mode="compact", ) response = engine.query("How do I rotate an API key?") print(response) for node in response.source_nodes: # always show your sources print(node.metadata.get("file_name"), round(node.score, 3))