LocalFilesystemMemory es una capa sobre GPTSimpleVectorIndex de Llama Index que abstrae los detalles de la gestión de índices guardados en el disco. Asume/crea una estructura de directorios para almacenar índices y proporciona una interfaz simple para administrarlos.
Un ejemplo que utiliza algunos archivos de Wikipedia que puede encontrar en este repositorio:
from llama_index import SimpleDirectoryReader
from gpt_memory import LocalFilesystemMemory
phil = SimpleDirectoryReader ( "gpt_memory/examples/phil" )
animals = SimpleDirectoryReader ( "gpt_memory/examples/animals" )
phil_docs = phil . load_data ()
animal_docs = animals . load_data ()
memory = LocalFilesystemMemory ( "example" )
memory . create_index ( "phil" , phil_docs )
memory . create_index ( "animals" , animal_docs )
query = "What is a capybara?"
print ( memory . query ( query ))
Devuelve: A capybara is a giant cavy rodent native to South America, which is the largest living rodent and a member of the genus Hydrochoerus. It inhabits savannas and dense forests, lives near bodies of water, and is a highly social species that can be found in groups as large as 100 individuals. The capybara is hunted for its meat and hide and also for grease from its thick fatty skin, but it is not considered a threatened species.
memory.query(prompt)
: el punto de entrada principal para hacer una pregunta.memory.create_index(name, docs, description=None)
: la forma principal de crear un índice. Los documentos pueden ser cadenas, listas de cadenas o listas de objetos de documento de GPTIndex.memory.update_index(name, docs)
: actualiza un índice con nuevos documentos.memory.delete_index(name)
: elimina un índice.Debajo del capó, esas funciones utilizan:
memory.get_index(name)
memory.query_index(name, prompt)
memory.find_most_relevant_index(prompt)
En esencia, la estructura del directorio es la siguiente:
- index_folder/
- metadata.json
- indexes/
- index_1.json
- index_2.json
- ...
El archivo metadata.json contiene la siguiente información:
{
"index_count": 2,
"index_descriptions": [
{
"name": "index_1",
"description": "Description of index generated by GPT Index.",
},
{
"name": "index_2",
"description": "Description of index generated by GPT Index.",
},
]
}