当前位置: 首页 > news >正文

大模型工程师学习日记(十):基于 LangChain 构建向量存储和查询 Qdrant

Qdrant介绍

Qdrant(读作:quadrant /'kwɑdrənt/ n. 象限;象限仪;四分之一圆)是一个向量相似度搜索引擎。它提供了一个生产就绪的服务,具有方便的 API 来存储、搜索和管理点 - 带有附加载荷的向量。Qdrant专门支持扩展过滤功能,使其对各种神经网络或基于语义的匹配、分面搜索和其他应用非常有用。

官方文档:Home - Qdrant

以下展示了如何使用与Qdrant向量数据库相关的功能。

有各种运行Qdrant的模式,取决于所选择的模式,会有一些细微的差异。选项包括:

  • 本地模式,无需服务器
  • Qdrant 云

请参阅安装说明。

%pip install --upgrade --quiet  langchain-qdrant langchain-openai langchain
#示例:qdrant_local.py
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings
from langchain_qdrant import Qdrant
from langchain_text_splitters import CharacterTextSplitter
loader = TextLoader("../../resource/knowledge.txt", encoding="UTF-8")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()

本地模式

Python 客户端允许您在本地模式下运行相同的代码,而无需运行 Qdrant 服务器。这对于测试和调试或者如果您计划仅存储少量向量非常有用。嵌入可能完全保存在内存中或者持久化在磁盘上。

内存中

对于一些测试场景和快速实验,您可能更喜欢仅将所有数据保存在内存中,因此当客户端被销毁时数据会丢失 - 通常在脚本/笔记本的末尾。

#示例:qdrant_local.py
qdrant = Qdrant.from_documents(
    docs,
    embeddings,
    location=":memory:",  # 本地模式,仅内存存储
    collection_name="my_documents",
)
磁盘存储

在不使用 Qdrant 服务器的本地模式下,还可以将您的向量存储在磁盘上,以便它们在运行之间持久化。

#示例:qdrant_disk.py
qdrant = Qdrant.from_documents(
    docs,
    embeddings,
    path="/tmp/local_qdrant",
    collection_name="my_documents",
)

相似度搜索

使用 Qdrant 向量存储的最简单场景是执行相似度搜索。在幕后,我们的查询将使用embedding_function对查询进行编码,并用于在 Qdrant 集合中查找相似的文档。

query = "Pixar公司是做什么的?"
found_docs = qdrant.similarity_search(query)
print(found_docs[0].page_content)

结果输出

During the next five years, I started a company named NeXT, another company named Pixar, and fell in love with an amazing woman who would become my wife. Pixar went on to create the worlds first computer animated feature film, Toy Story, and is now the most successful animation studio in the world. In a remarkable turn of events, Apple bought NeXT, I retuned to Apple, and the technology we developed at NeXT is at the heart of Apple's current renaissance. And Laurene and I have a wonderful family together.
在接下来的五年里, 我创立了一个名叫 NeXT 的公司,还有一个叫Pixar的公司,然后和一个后来成为我妻子的优雅女人相识。Pixar 制作了世界上第一个用电脑制作的动画电影——“”玩具总动员”,Pixar 现在也是世界上最成功的电脑制作工作室。在后来的一系列运转中,Apple 收购了NeXT,然后我又回到了苹果公司。我们在NeXT 发展的技术在 Apple 的复兴之中发挥了关键的作用。我还和 Laurence 一起建立了一个幸福的家庭。

Qdrant 云

如果您不想忙于管理基础设施,可以选择在 Qdrant 云上设置一个完全托管的 Qdrant 集群。包括一个永久免费的 1GB 集群供试用。使用托管版本与使用 Qdrant 的主要区别在于,您需要提供 API 密钥以防止公开访问您的部署。该值也可以设置在 QDRANT_API_KEY 环境变量中。

url = "<---qdrant cloud cluster url here --->"
api_key = "<---api key here--->"
qdrant = Qdrant.from_documents(
    docs,
    embeddings,
    url=url,
    prefer_grpc=True,
    api_key=api_key,
    collection_name="my_documents",
)

相关文章:

  • LearnOpenGL——高级光照(中)
  • Kali CentOs 7代理
  • 【JavaEE】-- 多线程(初阶)4
  • 投入与专注
  • 【Pandas】pandas Series replace
  • 【Python/Pytorch】-- 创建3090Ti显卡所需环境
  • 【芯片设计】AI芯片前端设计工程师面试记录·20250303
  • Django:文件上传时报错in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.
  • 魔百盒CM311-1a_YST_晶晨S905L3A芯片_2+8G_安卓9.0_免拆卡刷固件包
  • 不同类型光谱相机的技术差异比较
  • WPF-Avalonia-ReactiveUI-路由实践
  • 【商城实战(1)】启航:从0到1搭建电商帝国的第一步
  • Rust编程实战:Rust实现简单的Web服务,单线程性能问题
  • 第八篇《九变篇》
  • android13打基础: 控件alertdialog
  • 电子电气架构 --- 拓扑架构集中的趋势及其演变
  • Linux12-TCP\HTTP
  • e2studio开发RA2E1(18)----看门狗WDT
  • SEO新手操作实战精要
  • 未来经济范式争夺战:AR眼镜为何成为下一代交互终端的制高点?
  • 网站备案成功后该怎么做/seo排名怎样
  • 网站制作方案书/百度热榜实时热点
  • 国办关于加强政府网站建设/重庆百度搜索优化
  • 不懂代码如何做网站/店铺推广渠道有哪些
  • 建设网站需要下载神呢软件吗/西安百度推广公司
  • 做ppt模版的网站/网络营销 长沙