在AI项目中使用Qdrant Vector Store和LlamaIndex进行向量检索

在构建AI项目时,向量存储和检索的性能和效率至关重要。本文将介绍如何使用Qdrant Vector Store结合LlamaIndex进行向量检索,并提供详细的代码示例。

安装依赖

首先,我们需要安装相关的Python库。可以使用pip进行安装:

pip install llama-index-vector-stores-qdrant llama-index-readers-file llama-index-embeddings-fastembed llama-index-llms-openai

设置OpenAI API密钥

在开始之前,请确保已设置OpenAI API密钥。推荐将API密钥设置为环境变量以确保安全性。

使用终端设置环境变量:

export OPENAI_API_KEY=your_api_key_here

在Jupyter Notebook中使用IPython Magic命令:

%env OPENAI_API_KEY=your_api_key_here

在Python脚本中设置环境变量:

import os
os.environ["OPENAI_API_KEY"] = "your_api_key_here"

加载数据

我们将使用一个名为"paul_graham_essay.txt"的文本文件作为示例数据进行操作。以下是下载该文件的代码:

!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'

然后,我们可以加载该文件:

from llama_index.core import SimpleDirectoryReader

# 加载文档
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()

构建VectorStore索引

接下来,我们将创建Qdrant客户端并构建VectorStore索引:

import qdrant_client
from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.vector_stores.qdrant import QdrantVectorStore
from llama_index.embeddings.fastembed import FastEmbedEmbedding
from llama_index.core import Settings

Settings.embed_model = FastEmbedEmbedding(model_name="BAAI/bge-base-en-v1.5")

# 创建Qdrant客户端
client = qdrant_client.QdrantClient(location=":memory:")
vector_store = QdrantVectorStore(client=client, collection_name="paul_graham")
storage_context = StorageContext.from_defaults(vector_store=vector_store)

# 构建索引
index = VectorStoreIndex.from_documents(
    documents,
    storage_context=storage_context,
)

查询索引

在索引构建完成后,我们可以通过以下代码进行查询:

# 设置查询引擎
query_engine = index.as_query_engine()

# 查询示例
response = query_engine.query("What did the author do growing up?")
print(response)

查询结果示例如下:

The author worked on writing and programming before college.

异步构建和查询索引

如果需要进行异步操作,也可以使用以下代码:

import nest_asyncio
import qdrant_client

nest_asyncio.apply()

# 创建异步Qdrant客户端
aclient = qdrant_client.AsyncQdrantClient(location=":memory:")
vector_store = QdrantVectorStore(aclient=aclient, collection_name="paul_graham", prefer_grpc=True)
storage_context = StorageContext.from_defaults(vector_store=vector_store)

# 异步构建索引
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context, use_async=True)

# 异步查询示例
query_engine = index.as_query_engine(use_async=True)
response = await query_engine.aquery("What did the author do growing up?")
print(response)

可能遇到的错误

  1. API密钥错误:确保已正确设置API密钥,如果API密钥无效或未设置,可能导致认证失败。
  2. 数据路径错误:检查数据文件路径是否正确,如果路径错误可能导致数据加载失败。
  3. 依赖安装错误:确保依赖库已正确安装,如果安装失败可能导致代码无法运行。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料:

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值