Embedding模型和向量数据库的使用
一、知识储备Embedding、LLM、向量数据库、RAG的区别Embedding 模型把文本转换成向量 一串数字像 text-embedding-v4、BGE-M3大语言模型 (LLM) 理解并生成文本、人类可读的文字像 GPT、Qwen、Claude向量数据库存储高维向量数据适合非结构化数据。向量存储把 Embedding 模型生成的向量存起来。创建向量索引为了在海量数据中找得快数据库会提前把向量建立成特殊的数学结构比如树形结构、图结构等。相似性搜索核心注意向量数据库才是相似性搜索Embedding模型只是把东西转成向量。RAG Embedding 检索 Text Splitter切分器 LLM生成注意Embedding不做切分切分由RAG的Text Splitter切分器做。二、Embedding计算将一段文本如 我想知道迪士尼的退票政策通过 AI 模型转换成一组数字向量这个向量可以用来衡量文本之间的语义相似度。因为要调用连接阿里云百炼服务的 SDK工具包所以要openai。pip install openaiimport os from openai import OpenAI client OpenAI( api_key你的API, # 你访问阿里云服务的钥匙 base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 # 阿里云服务的地址 ) completion client.embeddings.create( modeltext-embedding-v4, #model 选择阿里云提供的翻译员Embedding 模型 input我想知道迪士尼的退票政策, #input 你要转换成数字的那句话 dimensions1024, # 指定向量维度数字越多描述越精确 encoding_formatfloat ) print(completion.model_dump_json())输入我想知道迪士尼的退票政策↓这段代码调用阿里云服务↓输出[0.123, -0.456, 0.789, ...] (1024个小数)三、向量数据库FAISS的使用存储向量和向量的相似检索此代码实现了一个智能搜索功能把文档存入数据库用户提问后自动找到最相关的文档并返回。准备文档 → 转换成向量 → 存入数据库 → 用户提问 → 返回最相关的文档第一步准备钥匙第二步准备文档第三步把文档变成数字第四步把向量存入 FAISS 数据库第五步用户提问搜索最相关的文档import os import numpy as np import faiss from openai import OpenAI # Step1. 初始化 API 客户端 try: client OpenAI( api_key你的key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 ) except Exception as e: print(初始化OpenAI客户端失败请检查环境变量DASHSCOPE_API_KEY是否已设置。) print(f错误信息: {e}) exit() # Step2. 准备示例文本和元数据 # 在实际应用中这些数据可能来自数据库、文件等 documents [ { id: doc1, text: 迪士尼乐园的门票一经售出原则上不予退换。但在特殊情况下如恶劣天气导致园区关闭可在官方指引下进行改期或退款。, metadata: {source: official_faq_v1.pdf, category: 退票政策, author: Admin} }, { id: doc2, text: 购买“奇妙年卡”的用户可以享受一年内多次入园的特权并且在餐饮和购物时有折扣。, metadata: {source: annual_pass_rules.docx, category: 会员权益, author: MarketingDept} }, { id: doc3, text: 对于在线购买的迪士尼门票如果需要退票必须在票面日期前48小时通过原购买渠道提交申请并可能收取手续费。, metadata: {source: online_policy.html, category: 退票政策, author: E-commerceTeam} }, { id: doc4, text: 园区内的“加勒比海盗”项目因年度维护将于下周暂停开放。, metadata: {source: maintenance_notice.txt, category: 园区公告, author: OpsDept} } ] # Step3. 创建元数据存储和向量列表 # 我们使用一个简单的列表来存储元数据。列表的索引将作为FAISS的ID。 # 这种方式简单直接适用于中小型数据集。 # 对于大型数据集可以考虑使用字典或数据库如Redis, SQLite metadata_store [] #保存原始文档内容和标签 vectors_list [] #保存 Embedding 模型生成的向量 vector_ids [] #建立向量和元数据之间的关联 print(正在为文档生成向量...) for i, doc in enumerate(documents): try: # 调用API生成向量 completion client.embeddings.create( modeltext-embedding-v4, inputdoc[text], dimensions1024, encoding_formatfloat ) # 获取向量 vector completion.data[0].embedding vectors_list.append(vector) # 存储元数据并使用列表索引作为唯一ID metadata_store.append(doc) vector_ids.append(i) # 自定义ID与列表索引一致 print(f - 已处理文档 {i1}/{len(documents)}) except Exception as e: print(f处理文档 {doc[id]} 时出错: {e}) continue # 将向量列表转换为NumPy数组FAISS需要这种格式 vectors_np np.array(vectors_list).astype(float32) vector_ids_np np.array(vector_ids) # Step4. 构建并填充 FAISS 索引 dimension 1024 # 向量维度 k 2 # 查找最近的3个邻居 # 创建一个基础的L2距离索引 index_flat_l2 faiss.IndexFlatL2(dimension) # 使用IndexIDMap来包装基础索引能够映射我们自定义的ID # 这就是关联向量和元数据的关键 index faiss.IndexIDMap(index_flat_l2) # 将向量和它们对应的ID添加到索引中 index.add_with_ids(vectors_np, vector_ids_np) print(f\nFAISS 索引已成功创建共包含 {index.ntotal} 个向量。) # Step5. 执行搜索并检索元数据 query_text 我想了解一下迪士尼门票的退款流程 print(f\n正在为查询文本生成向量: {query_text}) try: # 为查询文本生成向量 query_completion client.embeddings.create( modeltext-embedding-v4, inputquery_text, dimensions1024, encoding_formatfloat ) query_vector np.array([query_completion.data[0].embedding]).astype(float32) # 在FAISS索引中执行搜索 # search方法返回两个NumPy数组 # D: 距离 (distances) # I: 索引/ID (indices/IDs) distances, retrieved_ids index.search(query_vector, k) # Step6. 展示结果 print(\n--- 搜索结果 ---) # retrieved_ids[0] 包含与查询最相似的k个向量的ID for i in range(k): doc_id retrieved_ids[0][i] # 检查ID是否有效 if doc_id -1: print(f\n排名 {i1}: 未找到更多结果。) continue # 使用ID从我们的元数据存储中检索信息 retrieved_doc metadata_store[doc_id] print(f\n--- 排名 {i1} (相似度得分/距离: {distances[0][i]:.4f}) ---) print(fID: {doc_id}) print(f原始文本: {retrieved_doc[text]}) print(f元数据: {retrieved_doc[metadata]}) except Exception as e: print(f执行搜索时发生错误: {e})

相关新闻

Intel vt-d 与 risc-v aia 对比

Intel vt-d 与 risc-v aia 对比

2026/7/23 2:48:20 阅读更多 →
PCB贴片打样服务解析:快速打样如何缩短电子产品研发周期?

PCB贴片打样服务解析:快速打样如何缩短电子产品研发周期?

PCB贴片打样是电子产品研发阶段非常关键的一环。无论是消费电子、工业控制设备还是智能硬件产品,在进入批量生产之前,通常都需要通过PCB贴片打样进行功能验证和电路测试,从而确保产品设计的可靠性和稳定性。在电子制造行业中,PCB贴…

2026/7/23 2:48:20 阅读更多 →
Qwen3.8-Max-Preview部署指南:2.4T参数大模型本地化实践

Qwen3.8-Max-Preview部署指南:2.4T参数大模型本地化实践

阿里刚刚发布了Qwen3.8-Max-Preview模型,参数规模达到2.4T,这是目前开源大模型领域的一个重要突破。这个模型最值得关注的是其巨大的参数规模和对多模态能力的支持,预计将在代码生成、数学推理、文本理解等多个领域展现强大性能。对于技术开发…

2026/7/23 2:47:20 阅读更多 →

最新新闻

AI模型调用成本优化:OpenRouter智能路由策略与工程实践

AI模型调用成本优化:OpenRouter智能路由策略与工程实践

最近在折腾几个 AI 项目时,我发现一个挺有意思的现象:不少团队在模型调用成本上卡住了。不是技术实现不了,而是每次调用都在烧钱,尤其是面对高频、长文本或复杂推理任务时,账单增长速度比代码跑得还快。这时候&#xf…

2026/7/23 3:21:32 阅读更多 →
Kimi K3大模型资源压力解析:模型效能优化与算力挑战应对

Kimi K3大模型资源压力解析:模型效能优化与算力挑战应对

最近,如果你关注 AI 大模型领域,可能已经注意到一个现象:月之暗面(Moonshot AI)推出的 Kimi K3 模型上线后,用户需求远超官方预期,导致服务响应变慢、资源紧张。官方公告称正在优化模型效能与补…

2026/7/23 3:21:32 阅读更多 →
iPhone17抗反射膜哪个牌子好?评测对比:悟赫德观复盾的五维优势一目了然

iPhone17抗反射膜哪个牌子好?评测对比:悟赫德观复盾的五维优势一目了然

2026年iPhone17抗反射膜哪个牌子好?四类方案逐项对比,差距比想象中大给iPhone17挑一张真正有效的抗反射膜,打开电商平台一搜,从十几块到两百多块,每家都说自己是“AR抗反射”“防眩光护眼”,头都大了。iPho…

2026/7/23 3:21:32 阅读更多 →
专业校准无法恢复时间流逝对锂电池永恒的伤害-日历寿命-即将十五周岁的高龄锂电池

专业校准无法恢复时间流逝对锂电池永恒的伤害-日历寿命-即将十五周岁的高龄锂电池

使用14年以上的锂电池和8年以上的内置固态盘健康度如何还能正常使用吗_43.29wh-CSDN博客 专业校准无法逆转时间的刻痕:日历寿命视角下,即将十五周岁的高龄锂电池 校准完成后,系统读取的电池满充容量从 19440mWh 小幅攀升至 20000mWh&#x…

2026/7/23 3:21:32 阅读更多 →
一键清零程序编写与开发

一键清零程序编写与开发

方案一:Windows 批处理脚本 (.bat)这个脚本会清理指定目录下的所有文件和子文件夹,只保留目录本身。脚本代码:batchecho off chcp 65001 >nul setlocal enabledelayedexpansion:: 请务必修改这个路径! set "TARGET_DIRC…

2026/7/23 3:21:32 阅读更多 →
程序源码 OSS 上传 bug

程序源码 OSS 上传 bug

配置全部修正后,依然上传破损: 类源码的 OSS 上传代码存在缺陷。 简易验证:使用 OSS 浏览器(OSS Browser)手动上传一张图片到桶内 手动上传图片能正常打开:证明网站后台上传代码有问题,需要修改…

2026/7/23 3:20:31 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻