实际上,向量数据库在不同的领域和应用程序中都有着许多用例,涉及自然语言处理(NLP)、计算机视觉(CV)、推荐系统(RS)和其他需要对数据进行语义理解和匹配的领域 。在向量数据库中存储信息的一个用例是使大型语言模型(LLM)能够基于AI插件生成更相关、更连贯的文本 。
由于向量数据库将要查询的数据存储为嵌入向量,并且语言模型(LLM)也将其内部的知识编码为嵌入向量 , 因此在生成式问答应用中是天生一对 。向量数据库充当知识库的功能,而LLM可以直接在嵌入空间中查询数据的子集,一般可以使用以下方法进行操作:
- 用户通过界面用自然语言提出问题 。
- 问题的文本被传递给嵌入模型 , 然后返回一个句子嵌入向量 。
- 问题向量被传递给向量数据库,通过ANN搜索返回与之最相似的前k个结果 。这一步非常关键 , 因为它大大缩小了LLM在下一步中的搜索空间 。
- 构建一个LLM提示(基于开发者预定义的模板),将其转换为嵌入向量,并传递给LLM 。使用类似LangChain的框架可以方便地执行此步骤,因为可以动态构建提示语,并调用LLM的本地嵌入模块,而无需为每个工作流编写大量自定义代码 。
- LLM在前k个结果中搜索信息,并生成问题的答案 , 答案发送回用户 。

文章插图
图片
结合LLM和向量数据库可以构建许多其他有用的应用程序 。然而,了解向量数据库的一些潜在限制是必要的 。在搜索应用中,它们不一定优先考虑关键词短语的精确匹配来确定相关性 。存储和查询的数据必须适应所使用的嵌入模型的最大序列长度(对于类似BERT的模型,这个长度不超过几百个词) 。目前,最好的方法是利用像LangChain和LlamaIndex这样的框架,将数据分块或压缩成适合底层模型上下文的固定大小的向量 。
同样,向量数据库也面临着许多与其他数据库技术相同的挑战, 需要继续努力提高可扩展性、近似精度、延迟性能和经济性 。许多向量数据库在核心数据库能力方面需要提升,例如安全性、弹性、运营支持和工作负载支持的多样化 。随着AI应用的成熟,未来需要的不仅仅只限于向量搜索功能 。
【参考资料】
- https://Github.com/milvus-io/milvus
- Milvus: A Purpose-Built Vector Data Management System, SIGMOD'21
- https://github.com/facebookresearch/faiss
- https://www.pinecone.io
推荐阅读
- Python内置数据库:轻量级SQLite
- 灵活就业人员为何参保意愿不高?专家解读
- Oracle数据库存在不可用索引性能问题
- 每个程序员都必须了解的十种数据库
- 笔记本电脑性能分析:处理器、内存、硬盘和显卡的深度解读
- 深度优化数据库性能:Linux 内核参数调整解析
- 14个开源免费数据库监控工具,MySQL、Oracle、Postgres或MSSQL
- 初识向量数据库与pgvector实践
- 直面数据库的“崖山海战”:YashanDB另辟蹊径站上新高地
- 国内首个向量数据库标准发布
