Open In Colab

Faiss Reader#

If you’re opening this Notebook on colab, you will probably need to install LlamaIndex 🦙.

!pip install llama-index
import logging
import sys

logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
from llama_index.readers.faiss import FaissReader
# Build the Faiss index.
# A guide for how to get started with Faiss is here: https://github.com/facebookresearch/faiss/wiki/Getting-started
# We provide some example code below.

import faiss

# # Example Code
# d = 8
# docs = np.array([
#     [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
#     [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2],
#     [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3],
#     [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4],
#     [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
# ])
# # id_to_text_map is used for query retrieval
# id_to_text_map = {
#     0: "aaaaaaaaa bbbbbbb cccccc",
#     1: "foooooo barrrrrr",
#     2: "tmp tmptmp tmp",
#     3: "hello world hello world",
#     4: "cat dog cat dog"
# }
# # build the index
# index = faiss.IndexFlatL2(d)
# index.add(docs)

id_to_text_map = {
    "id1": "text blob 1",
    "id2": "text blob 2",
}
index = ...
reader = FaissReader(index)
# To load data from the Faiss index, you must specify:
# k: top nearest neighbors
# query: a 2D embedding representation of your queries (rows are queries)
k = 4
query1 = np.array([...])
query2 = np.array([...])
query = np.array([query1, query2])

documents = reader.load_data(query=query, id_to_text_map=id_to_text_map, k=k)

Create index#

index = SummaryIndex.from_documents(documents)
# set Logging to DEBUG for more detailed outputs
query_engine = index.as_query_engine()
response = query_engine.query("<query_text>")
display(Markdown(f"<b>{response}</b>"))