LangChain 中使用本地的 Qdrant 向量库

如果你想在 LangChain 中使用本地的 Qdrant 向量库,可以通过以下步骤实现。Qdrant 是一个开源的向量搜索引擎,支持高效的向量存储和检索,非常适合与 LangChain 结合使用。

以下是详细的步骤和代码示例,帮助你实现这一功能。


1. 安装所需的 Python 包

首先,确保你已经安装了以下 Python 包:

  • langchain:用于构建 AI 链。
  • qdrant-client:用于与 Qdrant 向量库交互。
  • sentence-transformers:用于生成文本的向量表示。

运行以下命令安装这些包:

pip install langchain qdrant-client sentence-transformers

2. 启动本地 Qdrant 服务

Qdrant 是一个向量数据库,需要先启动服务。你可以通过 Docker 快速启动一个本地的 Qdrant 实例:

docker pull qdrant/qdrant
docker run -p 6333:6333 qdrant/qdrant

启动后,Qdrant 服务会运行在 http://localhost:6333


3. 创建 Qdrant 向量库并插入数据

接下来,我们使用 qdrant-client 创建一个 Qdrant 集合(Collection),并向其中插入一些向量数据。

from qdrant_client import QdrantClient
from sentence_transformers import SentenceTransformer

# 初始化 Qdrant 客户端
client = QdrantClient(host="localhost", port=6333)

# 初始化 SentenceTransformer 模型,用于生成文本向量
model = SentenceTransformer('all-MiniLM-L6-v2')

# 创建集合(Collection)
collection_name = "my_collection"
client.recreate_collection(
    collection_name=collection_name,
    vectors_config={
        "size": model.get_sentence_embedding_dimension(),  # 向量维度
        "distance": "Cosine",  # 相似度计算方式
    }
)

# 插入数据
documents = [
    {"id": 1, "text": "LangChain 是一个强大的 AI 工具链"},
    {"id": 2, "text": "Qdrant 是一个高效的向量搜索引擎"},
    {"id": 3, "text": "SentenceTransformers 可以生成文本向量"},
]

# 生成向量并插入到 Qdrant
for doc in documents:
    vector = model.encode(doc["text"]).tolist()  # 将文本转换为向量
    client.upsert(
        collection_name=collection_name,
        points=[
            {
                "id": doc["id"],
                "vector": vector,
                "payload": {"text": doc["text"]},
            }
        ]
    )

print("数据插入完成!")

4. 在 LangChain 中使用 Qdrant 向量库

现在,我们可以在 LangChain 中使用 Qdrant 向量库进行检索。以下是一个完整的示例:

from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Qdrant
from langchain.chains import RetrievalQA
from langchain.llms import Ollama

# 初始化嵌入模型
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")

# 初始化 Qdrant 向量库
qdrant = Qdrant(
    client=client,
    collection_name=collection_name,
    embeddings=embeddings,
)

# 初始化 LLM 模型
llm = Ollama(model="deepseek-r1:1.5b")

# 创建检索链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=qdrant.as_retriever(),
)

# 提问
query = "LangChain 是什么?"
result = qa_chain.run(query)
print(result)

5. 代码解析

  1. 嵌入模型

    • 使用 HuggingFaceEmbeddings 加载 SentenceTransformer 模型,将文本转换为向量。
  2. Qdrant 向量库

    • 使用 Qdrant 类初始化向量库,指定 Qdrant 客户端、集合名称和嵌入模型。
  3. 检索链

    • 使用 RetrievalQA 创建一个检索链,结合 Qdrant 向量库和 LLM 模型(如 Ollama)进行问答。
  4. 提问

    • 通过 qa_chain.run(query) 提问,LangChain 会从 Qdrant 中检索相关文档,并生成回答。

6. 运行结果

运行上述代码后,LangChain 会从 Qdrant 中检索与问题相关的文档,并生成回答。例如:

LangChain 是一个强大的 AI 工具链,用于构建和部署基于语言模型的应用程序。

7. 总结

通过以上步骤,我们成功地将本地 Qdrant 向量库集成到 LangChain 中,并实现了基于向量检索的问答功能。这种方法非常适合需要高效检索和生成文本的场景,例如知识库问答、文档检索等。

如果你有更多的数据或需求,可以扩展 Qdrant 集合,或者尝试不同的嵌入模型和 LLM 模型。


如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

### Qdrant 向量数据库使用指南 #### 导入Qdrant向量存储库 为了能够操作Qdrant向量数据库,需要通过特定的Python包来实现这一功能。这可以通过下面给出的语句完成: ```python from langchain_qdrant import QdrantVectorStore ``` 此命令允许开发者访问`QdrantVectorStore`类以便进一步的操作[^1]。 #### 数据准备与环境设置 对于希望利用LlamaIndex项目中的资源作为测试数据集的情况,建议按照官方指引先行克隆该项目至本地环境中,并确保所需的数据文件位于指定路径下(例如`paul_graham_essay`目录)。这样做的好处是可以方便快捷地获取到高质量的样例文档用于实验目的[^2]。 #### 安装配置过程概述 安装并配置好Qdrant服务端之后,就可以着手于客户端侧的应用开发工作了。通常来说,这意味着要在应用程序里集成相应的SDK或API接口来进行后续的任务处理。上述提到过的`langchain_qdrant`模块即是为此而设计的一个工具选项之一[^3]。 #### 示例代码片段展示如何连接到远程实例 一旦完成了必要的前期准备工作,便可以编写简单的脚本来验证整个流程是否顺畅无阻。这里提供了一个基本的例子说明怎样建立同远端服务器之间的链接关系: ```python import qdrant_client as qc client = qc.QdrantClient( url="http://localhost:6333", # 替换成实际的服务地址 ) vector_store = QdrantVectorStore(client=client, collection_name="my_collection") ``` 这段程序展示了初始化一个Qdrant客户端对象以及创建关联矢量储存的具体方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值