向量计算-第05章-向量数据库技术_第1页
向量计算-第05章-向量数据库技术_第2页
向量计算-第05章-向量数据库技术_第3页
向量计算-第05章-向量数据库技术_第4页
向量计算-第05章-向量数据库技术_第5页
已阅读5页,还剩35页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

清华大学出版社《向量计算》配套课件·课堂讲义第5章向量数据库技术换个角度学AI,打通任督二脉刘鹏著·清华大学出版社为相似度而生的AI基础设施《向量计算》配套课件第5章向量数据库技术第5章向量数据库技术2/40教学目标1理解向量数据库相对传统数据库的局限与设计哲学2掌握Milvus、Pinecone、Chroma的架构与取舍3熟练使用CRUD操作完成向量库全流程管理4通过RAG实战理解向量库作为LLM外部记忆的作用重点与难点1重点:降维/分桶/近似搜索三大设计理念2重点:混合查询与索引参数(M、ef)调优3难点:按数据规模与场景选择合适的向量数据库《向量计算》配套课件第5章向量数据库技术第5章向量数据库技术3/40本章内容导航5.1向量数据库vs传统数据库5.2主流向量数据库架构解析5.3向量数据库的增删改查(CRUD)操作5.4实战:搭建一个私有知识库问答系统5.5向量数据库的性能优化与未来趋势5.6本章小结《向量计算》配套课件·第5章向量数据库技术5.1向量数据库vs传统数据库传统库的局限·设计哲学·核心能力《向量计算》配套课件5.1向量数据库vs传统数据库第5章向量数据库技术5/40传统数据库的查询方式(SQL)--精确匹配:查找名字叫"张三"的用户SELECT*FROMusersWHEREname='张三';--范围查询:查找价格在100-500元的商品SELECT*FROMproductsWHEREpriceBETWEEN100AND500;--复合查询:查找北京地区、年龄25-35岁的活跃用户SELECT*FROMusersWHEREcity='北京'ANDageBETWEEN25AND35ANDlast_login>'2024-12-01';注:传统库擅长结构化数据的精确匹配、范围与复合查询《向量计算》配套课件5.1向量数据库vs传统数据库第5章向量数据库技术6/40传统数据库处理向量的三大局限●维度灾难:768维空间中B树失灵,退化为全表扫描●相似度vs精确匹配:传统库只能答“等于”,答不了“最接近”●性能瓶颈:百万向量暴力比对,每秒高达百亿次浮点运算●结论:传统数据库无法胜任高维向量检索《向量计算》配套课件5.1向量数据库vs传统数据库第5章向量数据库技术7/40传统数据库的性能瓶颈●查询经B树索引查找高维向量●B树在高维失灵,无法高效处理●最终退化为全表扫描,形成瓶颈图5-1传统数据库在向量查询中的性能瓶颈《向量计算》配套课件5.1向量数据库vs传统数据库第5章向量数据库技术8/40向量数据库的设计哲学:为相似度而生●降维索引:先降维建索引,再映射回高维空间●分桶:把相似度高的向量归入同桶,只查相关桶●近似搜索:牺牲1%精度,换取1000倍速度–类比:把三维地球投影到二维地图,虽变形仍可定位《向量计算》配套课件5.1向量数据库vs传统数据库第5章向量数据库技术9/40向量数据库的六大核心能力●向量存储:float32/float16,支持批量导入与实时更新●索引构建:自动选择HNSW、IVF、PQ,平衡速度与召回●向量检索:余弦、欧氏、内积,返回Top-K最相似结果●混合查询:向量检索结合传统过滤条件●元数据过滤:检索的同时按元数据筛选●分布式扩展:横向扩展、自动分片与负载均衡《向量计算》配套课件·第5章向量数据库技术5.2主流向量数据库架构解析Milvus·Pinecone·Chroma·对比·其他《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术11/40Milvus:开源向量数据库的王者●Zilliz开源,GitHub最流行向量库(3万+星)●设计目标:高性能、高可用、易扩展●存算分离:存储层、计算层、协调层解耦–Proxy:接收请求、解析、路由到数据节点–Query/Index/DataNode:检索、建索引、持久化–RootCoordinator:全局协调,保证数据一致性《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术12/40Milvus整体架构●协调层:负责调度●代理层:处理请求●数据层:负责存储●计算层:执行向量检索●存储引擎:Parquet+Pulsar图5-2Milvus架构图《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术13/40Milvus的优势与劣势●开源免费:可自由部署,不依赖云服务●性能优异:单机可处理10亿+向量●功能完善:混合查询、过滤、分布式部署●生态丰富:Python/Java/Go/C++多语言SDK●劣势:部署复杂、运维成本高–劣势:学习曲线陡,早期版本稳定性待完善《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术14/40Pinecone:云原生的向量数据库●全托管SaaS,通过API直接交互●零配置:注册账号即可使用●自动扩展、多可用区高可用●毫秒级实时插入与更新●劣势:成本高、数据锁定、合规受限图5-3Pinecone云服务架构《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术15/40Chroma:轻量级的嵌入式数据库●2022推出,灵感来自SQLite:轻量、嵌入式、零配置●5分钟上手,本地运行,Python优先●单体架构:所有组件运行在一个进程●优势:极简部署、开发友好、集成LangChain●劣势:适合<100万向量,不支持分布式与水平扩展–可靠性有限,数据存内存或本地文件《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术16/40Chroma使用示例(约5分钟上手)importchromadbfromchromadb.configimportSettings#创建客户端(默认存储在内存中)client=chromadb.Client()#创建集合collection=client.create_collection("documents")#添加文档collection.add(documents=["这是一段关于AI的文章","这是另一段关于机器学习的文章"],metadatas=[{"topic":"AI"},{"topic":"ML"}],ids=["doc1","doc2"])#查询results=collection.query(query_texts=["人工智能的最新进展"],n_results=2)《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术17/40三大向量数据库对比数据库定位/架构优势劣势适用场景Milvus开源·存算分离分布式单机10亿+、功能完善、生态丰富部署复杂、运维成本高企业级大规模生产Pinecone云原生SaaS全托管零配置、自动扩展、延迟稳定成本高、数据锁定、合规限制快速启动、不愿运维Chroma轻量嵌入式(类SQLite)5分钟上手、本地优先、集成好<100万向量、不支持分布式学习、原型、小规模《向量计算》配套课件5.2主流向量数据库架构解析第5章向量数据库技术18/40其他值得关注的向量数据库●Weaviate:开源,支持GraphQL,内置向量化能力●Qdrant:Rust编写,高性能,支持过滤与聚合●pgvector:PostgreSQL扩展,复用已有基础设施●Elasticsearch:8.0+原生向量检索,兼全文搜索●Redis:RedisStack集成向量,适合实时缓存场景《向量计算》配套课件·第5章向量数据库技术5.3向量数据库的增删改查(CRUD)操作以Milvus为例:集合·插入·索引·查询·更新·删除《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术20/40创建集合(Collection≈表)frompymilvusimportCollection,FieldSchema,CollectionSchema,DataType#定义字段id_field=FieldSchema(name="id",dtype=DataType.INT64,is_primary=True,auto_id=False)vector_field=FieldSchema(name="embedding",dtype=DataType.FLOAT_VECTOR,dim=768)title_field=FieldSchema(name="title",dtype=DataType.VARCHAR,max_length=200)category_field=FieldSchema(name="category",dtype=DataType.VARCHAR,max_length=50)#创建Schemaschema=CollectionSchema(fields=[id_field,vector_field,title_field,category_field],description="商品向量集合")#创建集合collection=Collection(name="products",schema=schema)print(f"集合'{}'创建成功!")《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术21/40插入数据(批量插入)#插入数据insert_result=collection.insert([ids,embeddings,titles,categories_list])print(f"成功插入{insert_result.insert_count}条数据!")print(f"插入的ID范围:{insert_result.primary_keys[0]}到{insert_result.primary_keys[-1]}")注:先准备ids/embeddings/titles/categories_list(模拟1000商品)《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术22/40向量数据插入流程●生成向量→预处理→Schema验证●插入数据先进入内存●等待flush持久化到磁盘●最终存储到DataNode图5-4向量数据插入流程《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术23/40创建HNSW索引并加载集合#创建HNSW索引index_params={"index_type":"HNSW","metric_type":"IP",#内积(InnerProduct),适合归一化向量"params":{"M":16,#每个节点的最大连接数"efConstruction":256#构建时的搜索范围}}collection.create_index(field_name="embedding",index_params=index_params)print("HNSW索引创建成功!")《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术24/40查询数据(Top-K向量检索)#准备查询向量(模拟用户搜索"智能手机"的Embedding)query_embedding=np.random.randn(1,768).astype(np.float32)#设置查询参数search_params={"metric_type":"IP",#内积"params":{"ef":64#查询时的搜索范围,ef越大,越准确,但越慢}}#执行查询results=collection.search(data=query_embedding,anns_field="embedding",param=search_params,limit=5,#返回Top-5expr=None,#不使用元数据过滤output_fields=["title","category"]#返回这些字段)《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术25/40向量检索流程●查询向量→HNSW索引定位候选节点●计算相似度并排序●返回Top-K最相似结果●元数据过滤可前置或后置于检索●距离度量:IP内积/L2欧氏/COSINE余弦图5-5向量检索流程《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术26/40混合查询:expr元数据过滤表达式#简单条件expr='category=="电子产品"'#复杂条件expr='category=="电子产品"andprice<1000'#范围查询expr='pricebetween100and500'#多值匹配expr='categoryin["电子产品","图书"]'《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术27/40更新与删除:要点提示●更新本质:Milvus用“删除旧数据+插入新数据”实现●更新会使ID改变;保持ID需用upsert●删除:支持单条、批量、条件删除●删除后建议Compaction压缩,回收磁盘空间《向量计算》配套课件5.3向量数据库的增删改查(CRUD)操作第5章向量数据库技术28/40性能优化:按数据规模选择索引数据规模推荐索引小规模(<10万)FLAT(精确搜索)中等规模(10万~1000万)IVF_FLAT大规模(1000万~1亿)IVF_PQ超大规模(>1亿)HNSW+PQ《向量计算》配套课件·第5章向量数据库技术5.4实战:搭建一个私有知识库问答系统RAG·文档向量化·检索·生成·完整系统《向量计算》配套课件5.4实战:搭建一个私有知识库问答系统第5章向量数据库技术30/40RAG:检索增强生成●RAG(Retrieval-AugmentedGeneration)是企业AI核心●流程:提问→查询向量化→向量库检索相关文档–→构建提示词(问题+文档)→大模型生成答案●价值:缓解LLM的知识截止与幻觉问题●向量库角色:大语言模型的“外部记忆”《向量计算》配套课件5.4实战:搭建一个私有知识库问答系统第5章向量数据库技术31/40文档向量化:切分(Chunking)defchunk_text(text,chunk_size=500,overlap=50):"""将文本切分成小块Args:text:原始文本chunk_size:每块的大小(字符数)overlap:块之间的重叠(字符数)Returns:切分后的文本块列表"""chunks=[]start=0whilestart<len(text):end=start+chunk_sizechunk=text[start:end]chunks.append(chunk)start=end-overlapreturnchunks《向量计算》配套课件5.4实战:搭建一个私有知识库问答系统第5章向量数据库技术32/40检索相关文档#向量化查询query_embedding=model.encode([query])#设置搜索参数search_params={"metric_type":"COSINE","params":{"ef":64}}#执行检索results=collection.search(data=query_embedding,anns_field="embedding",param=search_params,limit=top_k,output_fields=["text","doc_id","chunk_id"])注:用SentenceTransformer编码查询,在Milvus中做COSINE检索《向量计算》配套课件5.4实战:搭建一个私有知识库问答系统第5章向量数据库技术33/40RAG系统完整工作流程●文档向量化并入库●用户提问→检索相关文档●构建提示词交大模型●生成答案返回用户●向量库承担知识存储与检索引擎图5-6RAG系统完整工作流程《向量计算》配套课件5.4实战:搭建一个私有知识库问答系统第5章向量数据库技术34/40整合:完整的RAGSystem类●create_collection:建集合+HNSW索引(COSINE)●add_documents:切分→向量化→插入→加载●retrieve:查询向量化,返回Top-K相关块●answer:检索结果+问题组装Prompt,调用GPT-4–展示向量库作为LLM外部记忆的核心作用《向量计算》配套课件·第5章向量数据库技术5.5向量数据库的性能优化与未来趋势高级优化技巧·2025技术趋势·选型决策《向量计算》配套课件5.5向量数据库的性能优化与未来趋势第5章向量数据库技术36/40性能优化的高级技巧●异步索引构建:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论