docs/examples/node_postprocessor/ColbertRerank.ipynb
<a href="https://colab.research.google.com/github/run-llama/llama_index/blob/main/docs/examples/node_postprocessor/ColbertRerank.ipynb" target="_parent"></a>
If you're opening this Notebook on colab, you will probably need to install LlamaIndex 🦙.
Colbert: ColBERT is a fast and accurate retrieval model, enabling scalable BERT-based search over large text collections in tens of milliseconds.
This example shows how we use Colbert-V2 model as a reranker.
!pip install llama-index
!pip install llama-index-core
!pip install --quiet transformers torch
!pip install llama-index-embeddings-openai
!pip install llama-index-llms-openai
!pip install llama-index-postprocessor-colbert-rerank
from llama_index.core import (
VectorStoreIndex,
SimpleDirectoryReader,
)
Download Data
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'
import os
os.environ["OPENAI_API_KEY"] = "sk-"
# load documents
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()
# build index
index = VectorStoreIndex.from_documents(documents=documents)
from llama_index.postprocessor.colbert_rerank import ColbertRerank
colbert_reranker = ColbertRerank(
top_n=5,
model="colbert-ir/colbertv2.0",
tokenizer="colbert-ir/colbertv2.0",
keep_retrieval_score=True,
)
query_engine = index.as_query_engine(
similarity_top_k=10,
node_postprocessors=[colbert_reranker],
)
response = query_engine.query(
"What did Sam Altman do in this essay?",
)
for node in response.source_nodes:
print(node.id_)
print(node.node.get_content()[:120])
print("reranking score: ", node.score)
print("retrieval score: ", node.node.metadata["retrieval_score"])
print("**********")
print(response)
response = query_engine.query(
"Which schools did Paul attend?",
)
for node in response.source_nodes:
print(node.id_)
print(node.node.get_content()[:120])
print("reranking score: ", node.score)
print("retrieval score: ", node.node.metadata["retrieval_score"])
print("**********")
print(response)