LLM 学习之「向量数据库」

向量数据库解析

什么是向量数据库?

向量数据库是一种以向量或数据点的数学表示形式存储数据的数据库。 人工智能和机器学习使非结构化数据能够转换为捕获意义和上下文的数字表示(向量),这得益于自然语言处理和计算机视觉的进步。

矢量相似性搜索 (VSS) 是矢量数据库的关键功能。它是查找与向量数据库中给定查询向量相似的数据点的过程。

常用的 VSS 用途包括推荐系统、图像和视频搜索、自然语言处理和异常检测。例如,如果构建推荐系统,则可以使用 VSS 查找(并建议)与用户以前表现出兴趣的产品类似的产品。

向量数据库

信息有多种形式。有些信息是非结构化的,例如文本文档、富媒体和音频,有些则是结构化的,例如应用程序日志、表格和图表。人工智能和机器学习(AI/ML)的创新使我们能够创建一种机器学习模型,即嵌入模型。嵌入模型将所有类型的数据编码为向量,以捕获资产的含义和上下文。这样我们就能够通过搜索相邻的数据点找到相似的资产。向量搜索方法可提供独特的体验,例如用智能手机拍照,然后搜索相似的图像。

向量数据库能够将向量存储为高维点并进行检索。这些数据库增加了额外的功能,可以高效、快速地查找 N 维空间中的最近邻。

这些功能通常由 k 最近邻(k-NN)索引提供支持,并使用分层可导航小世界(HNSW)和倒排文件索引(IVF)算法等算法构建。

向量数据库提供了其他功能,例如数据管理、容错、身份验证和访问控制以及查询引擎。

为什么向量数据库很重要?

作为开发人员的我们,可以将嵌入生成的向量索引到向量数据库中。这样的话,他们便可通过查询相邻向量来找到相似的内容。前面我们介绍的文章中,有一部分向量的实用,就是将文本内容向量到数据库中,然后用户每次输入问题的时候先经过向量数据库,然后才是 LLM,后面有一篇文章我们构建一个智能客服系统的时候如何提高响应速度重点介绍在LLM 的实用和缓存。

向量数据库提供了一种使嵌入模型有效运行的方法。通过复杂的查询语言,利用资源管理、安全控制、可扩展性、容错能力和高效信息检索等数据库功能,可以提高应用程序开发效率。

向量数据库最终帮助我们开发人员开发出独有的应用程序体验。例如,在手机淘宝中,用户可以在智能手机上拍摄照片以搜索相似的图像。

我们可以使用其他类型的机器学习模型自动从图像和扫描文档等内容中提取元数据。他们可以将元数据与向量一起编入索引,以实现对关键字和向量的混合搜索。我们还可以将语义理解融入相关性排名中,以提升相关内容的搜索结果。

例如 ChatGPT 这样的新模型是对生成式人工智能(AI)的创新,这些模型可以生成文本并管理与人类的复杂对话。有些模型可以在多种模式下运行;例如,有些模型可以根据用户描述的景观生成符合描述内容的图像。

但是,生成式模型容易产生幻觉,这可能会导致聊天机器人对用户造成误导。 向量数据库可以弥补生成式人工智能模型的这一缺陷。向量数据库为生成式人工智能聊天机器人提供外部知识库,确保给它们提供的是我们信赖的数据信息。

向量数据库的使用方式有哪些?

向量数据库通常为视觉、语义和多模态搜索等向量搜索使用案例提供支持。它们与生成式人工智能(AI)文本模型配对,创建了提供对话式搜索体验的智能代理。比如前面我们的文章“使用langchain搭建本地知识库系统(新) - 掘金 (juejin.cn)”中就实用了向量数据库。

开发过程从构建嵌入模型(embedding-model)开始,该模型将类似产品图像的语料库编码为向量。数据导入过程也称为数据融合。我们就可以使用该数据库搜索

### 如何将大型语言模型(LLM)连接到本地向量数据库 要实现大型语言模型(LLM)与本地向量数据库的有效集成,可以通过以下几个方面来构建完整的解决方案: #### 数据准备阶段 在数据准备过程中,需要确保文档或知识库能够被转换成适合向量数据库存储的形式。具体来说,原始文本会被送入嵌入模型中生成高维向量表示[^2]。 #### 向量化过程 通过使用预训练好的嵌入模型(Embedding Model),可以将企业的内部资料转化为稠密的数值型特征向量。这些向量随后会存入专门设计用于处理此类结构化数据的向量数据库系统内。 #### 查询流程说明 当用户发起一个问题请求时,同样的机制也会应用于用户的自然语言提问上:即先由相同的或者兼容性的embedding function计算得到对应的query vector;接着此vector会在已建立的知识库索引里寻找最相似的一批候选答案项。 #### 集成架构建议 为了使整个工作流顺畅运行,在技术选型层面需考虑选用支持API接口调用方式操作管理的开源/商业版Vector DB产品,并且保证其具备良好的扩展性和性能表现以满足实际业务需求场景下的高频次访问压力测试标准[^1]。 ```python import pinecone # 假设这里选择的是Pinecone作为向量数据库服务提供商之一 # 初始化 Pinecone 客户端并连接至指定环境中的目标命名空间 pinecone.init(api_key="your_api_key", environment="us-west1-gcp") index_name = 'example-index' if index_name not in pinecone.list_indexes(): pinecone.create_index(index_name, dimension=1536) # 加载预先定义好维度大小等于上述参数设置值 (dimension=1536) 的 embedding model 实例对象 from sentence_transformers import SentenceTransformer model = SentenceTransformer('all-MiniLM-L6-v2') def query_vector_db(text_query): vec = model.encode([text_query]).tolist() result = pinecone.Index(index_name).query(vec, top_k=5, include_metadata=True) return result['matches'] ``` 以上代码片段展示了如何利用Python SDK对接某特定类型的云端托管式向量搜索引擎实例完成基本功能演示。当然也可以替换为其他自部署方案比如Milvus/Zilliz Cloud等等根据项目具体情况灵活调整适配策略即可达成目的。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值