初见大模型
作为新手接触大模型后,LLM模型、Embedding模型、rank模型、vector模型等等选择上可谓是一步一个坑,迷茫的走在迷茫的大路上。总之各种途径去选择合适的模型,今天了解下向量数据库选择依据。
借鉴前人
学习之前先看看大家都在关注什么,主要看市面上那个火,大厂们关注那个、开源项目用的那个?为此看了dify、langchain、llama-index等框架里面默认用的那些。
- dify:默认使用的weaviate,可能主要考虑他是sass版本天然支持多租户。
- langchain: 提供的代码示例主要用了Chroma,可能考虑可以基于内存直接运行,直接上手测试
- 网上关注度比较高的Faiss,weaviate、Milvus
- 我司用的qdrant
选择合适的向量数据库
共性
- 都是能够实现基础的文本语义检索,
- 支持多语言客户端
- 在三方框架都有相应的支持
- 多种部署方式(云原生、docker、本地等等)
现在聊聊他们各自的特点
数据库 | Qdrant | Weaviate | Milvus | Faiss |
---|---|---|---|---|
开源且可自托管 | ✅ | ✅ | ✅ | ✅ |
开源协议 | Apache-2.0 | BSD | Apache-2.0 | MIT |
开发语言 | Rust | Go | Go, C++ | C++ |
Github Stars (k) | 18.8 | 10.2 | 28.1 | 29.4 |
首次发布时间 | 2021 | 2019 | 2019 | 2017 |
SDK客户端 | Python, JS, Go, Java, .Net, Rust | Python, JS, Java, Go | Python, Java, JS, Go | Python,Java,JavaScript,C++ |
托管云服务 | ✅ | ✅ | ✅ | ✅ |
内置文本嵌入 | ❌ | ✅ | ❌ | ❌ |
混合检索 | ❌ | ✅ | ✅表内多向量混合 | ✅ |
元信息筛选 | ✅ | ✅ | ✅ | ✅ |
BM25支持 | ❌ | ✅ | ✅ | 倒排索引 |
文本搜索 | ✅ | ✅ | ❌ | ❌ |
Langchain集成 | ✅ | ✅ | ✅ | ✅ |
Llama-index集成 | ✅ | ✅ | ✅ | ✅ |
Geo地理信息搜索 | ✅ | ✅ | ❌ | ❌ |
多租户支持 | ✅ | ✅ | ✅ | ❌ |
最大维度 | 无限制 | 65535 | 32768 | 无 |
索引种类 | HNSW | HNSW | ANNOY, FAISS, HNSW, ScANN | FAISS, HNSW |
分片 | 静态分片 | 静态分片 | 动态分片 | 不支持提供 |
Facets(带有计数的聚合) | ❌ | ✅ | ✅ | ❌ |
Rest API | ✅ | ✅ | ✅ | ❌ |
调用内置LLM用于RAG | - | ✅Generative Search | - | ❌ |
总结个人观点
数据库 | 说明 | 个人观点 |
---|---|---|
Qdrant | 1. 一个集合中可以存多种向量(图片、文字等)2. 资源占用相当少 | API简单易懂,有可视化页面,初学者友好,不支持混合检索,功能不够强大 |
Weaviate | 1. 性能相对不错2. 支持内置嵌入3. 支持文本搜索4. GraphQL API5. 支持S3备份 | 功能强大,花活挺多,内置嵌入初学者没啥用,没有可视化页面也不友好 |
Milvus | 1. 官方支持的可视化操作界面2. 较高的搜索准确率3. 丰富的SDK4. GPU加速 | 功能同样强大,支持GPU加速对大数据量友好,官网API稳定易懂,对比mysql学习 |
Faiss | GPU加速的高速检索,特别擅长处理庞大数据集的快速最近邻搜索;2.适应不同技术风格的搜索技术 | 一直强调GPU加速,可能是真的强 |
检索方式对比
- Milvus:多向量搜索
- Weaviate: 混合搜索(向量检索+BM25关键词搜索)
- Qdrant:向量检索(关键字全文过滤)
- Faiss: 支持批量查询(GPU高效索引)
多向量检索:适合复杂的场景,例如当一个实体可以通过多个不同的向量表示时。这适用于同一数据(如一个句子)通过不同嵌入模型处理,或当多模态信息(如个人的图像、指纹和声纹)转换成各种向量格式的情况。通过表范围内的“多路召回”,并给这些向量分配权重,它们的综合作用可以明显增加召回能力,并提高搜索结果的有效性。
BM25和简单的关键词搜索有什么区别?
简单的关键词搜索通常基于词频:如果一个词在文档中出现,那么这个文档就被认为是相关的。这种方法可能只计算关键词的出现次数,并且所有关键词都被视为同等重要。
BM25则是基于IF-IDF(词频-逆文档率算法)采用更复杂的算法,不仅考虑词频,还考虑文档长度和词的逆文档频率(即在所有文档中的稀有程度)。这意味着BM25可以提供一个更为精细化的相关性评分,更好地反映查询与文档的匹配程度
综上所述
对于新人入门尝试可以使用drant,学习成本低。
具体还得看业务需求,是否有复杂的逻辑,比如多模态需求、前端开发能力等可以使用Milvus,社区也比较活跃。
个人对Weaviate接受程度不高,初学者学习有点费劲,但是网上weaviate的文章还是挺多的,于用生产。
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓