vector-embeddings-demos
Azure-Samples/vector-embeddings-demos加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一位国际会议的口译员。你的任务不是翻译语言,而是翻译"意思"——把一句话、一张图片、一段视频,转换成计算机能理解的数字列表。在 AI 世界里,这个翻译官就叫向量嵌入(Vector Embeddings)。
"dog" 这个词,在向量空间里可能变成:[0.017, -0.007, -0.058, 0.054, -0.028, ...]
不同的"翻译官"(AI 模型)对同一概念产出的数字列表各不相同。Azure-Samples/vector-embeddings-demos 就是微软 Azure 官方出品的一套实战教程,手把手教你怎么用 Azure OpenAI 服务做向量嵌入——从生成到可视化,从相似度计算到降维呈现,覆盖了完整的知识链条。
在 RAG(检索增强生成)成为大模型应用标配的当下,向量嵌入是整个流程的核心地基。然而,大多数开发者对嵌入模型的理解停留在"调用 API 得到向量"这一层,缺少系统性的认知——比如:
这些正是本项目试图回答的核心问题。它不是面向生产环境的部署工具,而是一套交互式学习系统——用 Jupyter Notebook 替代枯燥的文档,让开发者在动手实验的过程中建立对向量嵌入的直觉。
项目包含 9 个核心 Notebook,形成了一条从理论到实践的完整学习路径:
入门阶段(相似性与距离度量)
similarity.ipynb:用余弦相似度(Cosine Similarity)比较两个向量的"距离"。比如"dog"和"puppy"的相似度远高于"dog"和"car",这是语义搜索的底层原理。distance_metrics.ipynb:系统讲解四种距离度量——欧几里得距离、曼哈顿距离、内积、余弦距离,并解释单位向量(unit vector)对测量选择的影响。comparison.ipynb:横向对比 Word2Vec、text-embedding-ada-002、text-embedding-3-small 三种模型在处理同一批数据时的表现差异。进阶阶段(降维与可视化)
dimension_reduction.ipynb:768 维甚至 1536 维的向量无法直接可视化,项目教你用 PCA(主成分分析)和 t-SNE(t-分布邻域嵌入)把高维向量"压缩"到 2D/3D 空间。降维后的可视化图能直观看到语义相近的词在空间中聚集在一起。generate_embedding.ipynb:从零开始演示如何调用 Azure OpenAI 的嵌入接口生成向量,涵盖端点配置、认证(azure-identity)和错误处理。search.ipynb:将嵌入技术落地到实际场景——基于向量相似度实现语义搜索。在真实数据上跑一下,你会发现"查找所有关于金融风险的论文"这类语义查询,远比传统关键词匹配精准得多。高级阶段(压缩与多模态)
quantization.ipynb:介绍向量量化技术,将高维浮点向量压缩为低比特表示(如 INT8),大幅降低存储和检索成本,同时尽可能保持精度。这是向量数据库(如 Milvus、Pinecone)节省成本的核心手段。multimodal_vectors.ipynb 和 prep_multimodal.ipynb:用 Azure AI Vision 将图片编码为向量,与文本向量共存于同一个语义空间,实现跨模态检索——用文字"找图片"或用图片"找文字"。prep_openai.ipynb 和 prep_word2vec_gnews.ipynb:预计算并保存各模型的嵌入向量到 JSON 文件,供其他 Notebook 直接加载使用,避免重复调用 API。本项目的技术栈非常清晰,全用 Python 实现,依赖简洁:
核心依赖
openai(≥1.109.1):调用 Azure OpenAI 嵌入接口azure-identity:Azure 服务认证,支持 Azure CLI、Managed Identity 等多种方式scikit-learn:提供 PCA、t-SNE 等降维算法hnswlib:近似最近邻搜索库,用于高效向量检索gensim:加载 Google News Word2Vec 预训练模型numpy / scipy / matplotlib:数值计算与可视化数据文件(预计算嵌入)
项目在 embeddings/ 目录下附带了大量预计算的嵌入向量 JSON 文件,包括:
这些 JSON 文件让 Notebook 无需调用 API 即可直接加载数据,降低学习门槛。
基础设施即代码(IaC)
infra/ 目录下提供 Azure Bicep 模板,可以一键部署 Azure OpenAI 服务和相关基础设施。write_dotenv.sh 脚本自动生成 .env 配置文件,简化本地环境搭建。
局限性
open('embeddings/words_text-embedding-ada-002.json')),没有抽象为配置或参数化,生产落地需要较大改造。值得关注的设计选择
作者选择将预计算向量以 JSON 文件形式直接 commit 到仓库中(约 11 个 JSON 文件),这导致仓库体积较大(约数 MB),但换来的好处是学习者可以直接运行代码,无需等待 API 调用。这个trade-off对于教程项目是合理的,但生产系统必须避免这种做法。
随着大模型应用的爆发,向量数据库赛道在 2023-2024 年融资超过 10 亿美元(Pinecone、Weaviate、Milvus 等),向量嵌入作为连接用户查询与大模型知识的桥梁,其重要性持续上升。
本项目填补了一个具体的市场空白:系统化学习向量嵌入实操技能的资源极度匮乏。大多数博客和教程只讲"怎么调用 API",很少有人系统对比不同嵌入模型的特性、讲解距离度量选择策略、演示降维可视化技术。微软用这套 Notebook 填补了这个空白,而且直接依托 Azure OpenAI——这对已经在使用 Azure 的企业用户尤为友好。
增长趋势方面,RAG 架构的广泛采用直接驱动了向量嵌入技术的需求。开发者不再满足于"能用",而是追求"用好"——理解维度选择背后的原理、掌握量化压缩的技巧、探索多模态融合的可能性。这类需求正在从头部 AI 公司向中小企业扩散。
安装依赖后(pip install -r requirements.txt),按顺序运行 Notebook 是最佳学习路径。推荐路径:
similarity.ipynb → 建立"向量即语义"的基本直觉distance_metrics.ipynb → 理解不同距离度量的适用场景comparison.ipynb → 感受不同模型的效果差异dimension_reduction.ipynb → 用可视化验证自己的直觉search.ipynb → 体验向量搜索的实际威力如果遇到 Azure 认证问题,检查 .env 文件中的 AZURE_OPENAI_ENDPOINT 是否正确配置,或使用 az login 确保 Azure CLI 已登录。Word2Vec 部分可以完全离线运行,是验证环境的最佳起点。