Skip to content
Open

fix #51

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 23 additions & 19 deletions rag/notebook/chapter11/11.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -440,11 +440,14 @@
"source": [
"\n",
"- Faiss\n",
" - Faiss 是 Facebook AI 开源的一款**高性能向量搜索库**,核心优势在于其极致优化的 C++ 实现和强大的索引支持。Faiss 并不是一个数据库,而是一个“工具库”,提供一系列向量索引算法的实现,包括 Flat、IVF、PQ、HNSW 等。Faiss 的定位更偏底层,通常被用于构建自定义向量系统,适合有能力自行封装服务、管理存储和持久化的团队或开发者。\n",
"\n",
" - Faiss 是 Facebook AI 开源的一款**高性能向量搜索库**,核心优势在于其极致优化的 C++ 实现和强大的索引支持。Faiss 并不是一个数据库,而是一个“工具库”,提供一系列向量索引算法的实现,包括 Flat、IVF、PQ、HNSW 等。Faiss 的定位更偏底层,通常被用于构建自定义向量系统,适合有能力自行封装服务、管理存储和持久化的团队或开发者。\n",
"- Chroma\n",
" - Chroma 是一款定位于**轻量级、本地化、快速部署**的向量数据库,主打“开箱即用”的用户体验。它将“文档+元数据+嵌入向量”三者紧密绑定在一起,默认采用 SQLite 存储和 FAISS 作为索引引擎,支持简单的过滤和按 namespace 分隔数据。Chroma 适合小型项目或原型系统的快速开发,尤其适用于个人开发者、本地测试、教育场景。但它在分布式部署、索引类型灵活性、大规模检索优化等方面仍有明显短板。\n",
"\n",
" - Chroma 是一款定位于**轻量级、本地化、快速部署**的向量数据库,主打“开箱即用”的用户体验。它将“文档+元数据+嵌入向量”三者紧密绑定在一起,默认采用 SQLite 存储和 FAISS 作为索引引擎,支持简单的过滤和按 namespace 分隔数据。Chroma 适合小型项目或原型系统的快速开发,尤其适用于个人开发者、本地测试、教育场景。但它在分布式部署、索引类型灵活性、大规模检索优化等方面仍有明显短板。\n",
"- Milvus\n",
" - Milvus 是一款功能完备的向量数据库,由 Zilliz 开发,目标是构建“工业级向量检索系统”。它具备完整的向量生命周期管理能力,支持百万级甚至十亿级的向量存储与检索,适合部署在云端、服务器集群等生产环境中。Milvus 的架构支持分布式部署、冷热分层存储、向量+标量混合过滤查询,并提供 SDK 与 RESTful/gRPC 接口。\n",
"\n",
" - Milvus 是一款功能完备的向量数据库,由 Zilliz 开发,目标是构建“工业级向量检索系统”。它具备完整的向量生命周期管理能力,支持百万级甚至十亿级的向量存储与检索,适合部署在云端、服务器集群等生产环境中。Milvus 的架构支持分布式部署、冷热分层存储、向量+标量混合过滤查询,并提供 SDK 与 RESTful/gRPC 接口。\n",
"\n",
"| 名称 | 主要特性 | 优劣势 | 适用场景 |\n",
"| ------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------ |\n",
Expand Down Expand Up @@ -797,9 +800,10 @@
"- **多层图结构**:构建阶段将向量按距离随机分配到 L ~ 0 多层,小层包含所有向量,大层仅抽样少量“代表点”,形成金字塔。\n",
"- **顶层随机起点**:查询向量进入 最高层,任选一个节点作为起始。\n",
"- **贪婪近邻跳转**:在当前层反复执行:\n",
" - 计算当前节点邻居与查询向量的距离;\n",
" - 选择距离最近的邻居;\n",
" - 若该邻居比当前节点更近,则跳转过去并继续,否则停止(达到局部最优)。\n",
"\n",
" - 计算当前节点邻居与查询向量的距离;\n",
" - 选择距离最近的邻居;\n",
" - 若该邻居比当前节点更近,则跳转过去并继续,否则停止(达到局部最优)。\n",
"- **逐层向下**:把“局部最近节点”作为下一层的入口,层层递进,直到底层 0,找到nearest neighbor。\n",
"\n",
" 通过上述查询算法,不必检索那些离查询点较远的相似度较低的元素,进而增加检索效率(同时造成了HNSW找到的是近似最优解),HNSW的时间复杂度是$O(logN)$。\n",
Expand Down Expand Up @@ -827,7 +831,7 @@
"\n",
"训练:将高维向量划分为M段,对训练集中的每段进行K-means聚类,假设K=256,则每段都有256个中心向量。\n",
"\n",
"量化有了K个聚类中心向量,便可对他们进行编号,例如ClusterID=0~255。\n",
"量化: 有了K个聚类中心向量,便可对他们进行编号,例如ClusterID=0~255。\n",
"\n",
"查询:\n",
"\n",
Expand Down Expand Up @@ -1152,21 +1156,21 @@
"在模型不变的情况下,通过选择更好的推理框架,也可以提升大模型的推理性能。当前主流的模型推理框架有Ollama、LightLLM、vLLM以及LMDeploy等等。\n",
"\n",
"- **Ollama**\n",
" - 预打包模型:内置了LLaMA、Mistral等多种模型。\n",
" - 硬件适配性强:针对日常使用的硬件进行了CPU和GPU推理优化,无论是MacBook、PC还是边缘设备,都能流畅运行AI模型。\n",
" - 操作便捷:提供简洁的API和CLI,只需简单配置,就能快速启动大语言模型。\n",
" - 预打包模型:内置了LLaMA、Mistral等多种模型。\n",
" - 硬件适配性强:针对日常使用的硬件进行了CPU和GPU推理优化,无论是MacBook、PC还是边缘设备,都能流畅运行AI模型。\n",
" - 操作便捷:提供简洁的API和CLI,只需简单配置,就能快速启动大语言模型。\n",
"- **LightLLM**\n",
" - 轻量级设计:占用资源少,易于部署和扩展,方便快速上手进行本地部署和定制修改。\n",
" - 高性能:通过多种优化技术如三进程异步协作、Token Attention等,实现高速推理,获得更高的吞吐量。\n",
" - 易用性:提供 Docker 容器和详细文档,简化使用流程,降低使用门槛。\n",
" - 轻量级设计:占用资源少,易于部署和扩展,方便快速上手进行本地部署和定制修改。\n",
" - 高性能:通过多种优化技术如三进程异步协作、Token Attention等,实现高速推理,获得更高的吞吐量。\n",
" - 易用性:提供 Docker 容器和详细文档,简化使用流程,降低使用门槛。\n",
"- **vLLM**\n",
" - PagedAttention技术:突破传统KV缓存机制,实现显存分页管理,支持超长序列生成(如10万token对话)。\n",
" - 吞吐量领先:在 A100 GPU上可达传统框架3倍以上吞吐量,支持动态批处理。\n",
" - 生态兼容性:原生支持HuggingFace模型格式,兼容PyTorch生态。\n",
" - PagedAttention技术:突破传统KV缓存机制,实现显存分页管理,支持超长序列生成(如10万token对话)。\n",
" - 吞吐量领先:在 A100 GPU上可达传统框架3倍以上吞吐量,支持动态批处理。\n",
" - 生态兼容性:原生支持HuggingFace模型格式,兼容PyTorch生态。\n",
"- **LMDeploy**\n",
" - Turbomind引擎:采用异步流水线并行,延迟降低至50ms级别\n",
" - 量化部署工具链:支持W4A16量化,模型体积压缩4倍\n",
" - 动态批处理:智能合并不同长度请求,GPU利用率达90%+\n",
" - Turbomind引擎:采用异步流水线并行,延迟降低至50ms级别\n",
" - 量化部署工具链:支持W4A16量化,模型体积压缩4倍\n",
" - 动态批处理:智能合并不同长度请求,GPU利用率达90%+\n",
"\n",
"LazyLLM已完成LightLLM、vLLM、LMDeploy三种框架的完美适配,开发者可以根据自己的实际需求,灵活选择推理框架,以实现最适合自己的模型推理体验。\n",
"\n",
Expand Down