先发制人2026
72.36M · 2026-03-22
作为一名在大数据领域摸爬滚打多年的工程师,你一定对这样的 SQL 语句烂熟于心:
SELECT * FROM products WHERE category = 'electronics' AND price < 5000;
这是一种精确匹配(Exact Match)。数据库像一个一丝不苟的图书管理员,你给它一个 ISBN 号,它给你一本书。如果 ISBN 错了一位,它就冷冰冰地告诉你:0 rows returned。
但在 AI 的世界里,用户的问题往往是模糊的、充满“灵魂”的。比如用户问:
如果你试图用 SQL 的 LIKE 语句去匹配“散热好”、“不太贵”,那你大概率会疯掉。因为数据库里存的是“骁龙8 Gen 2”、“VC液冷”、“4999元”,根本没有“不太贵”这个字段。
这时候,向量数据库(Vector Database) 就登场了。它不再比较“字面是否一样”,而是比较“意思是否相近”。
今天,我们就来揭开这个 AI 时代“新基建”的神秘面纱,完成从大数据工程师到 AI 数据架构师的第一步蜕变。
要理解向量数据库,首先要理解它的原子单位——Embedding(嵌入)。
想象一下,我们把世界上所有的词语都扔进一个巨大的、多维的坐标系里。
Embedding 就是把文本变成一串数字(向量),这串数字代表了它在这个高维空间里的坐标。
| 特性 | 传统数据库 (MySQL/HBase) | 向量数据库 (Milvus/Chroma) |
|---|---|---|
| 查询逻辑 | 精确匹配 (=, LIKE) | 相似度匹配 (Approximate Nearest Neighbor) |
| 核心操作 | CRUD | Insert & Search (TopK) |
| 数据形态 | 结构化 (Row/Column) | 非结构化 (Vector + Metadata) |
| 结果 | 确定性结果 | 概率性结果 (Score) |
既然数据变成了空间里的点,那怎么判断两个点“像不像”呢?我们需要一把尺子。在大数据聚类算法(如 K-Means)中,你可能已经见过它们:
光说不练假把式。作为工程师,我们直接上代码。 我们将使用 Chroma —— 向量数据库界的 SQLite。它轻量、无需安装服务器,直接作为 Python 库运行,非常适合 MVP(最小可行性产品)验证。
我们要存入三句话,然后问一个问题,看它能不能找到最相关的那句。
pip install chromadb
import chromadb
# 1. 初始化一个本地的向量数据库客户端(内存模式,重启数据丢失,适合测试)
client = chromadb.Client()
# 2. 创建一个集合 (Collection),类似于 SQL 中的 Table
# 这里我们使用默认的 Embedding 模型 (all-MiniLM-L6-v2),它会自动下载
collection = client.create_collection(name="my_knowledge_base")
# 3. 准备数据 (Documents) 和 元数据 (Metadata)
documents = [
"Hadoop 是一个分布式系统基础架构,主要解决海量数据的存储和分析计算问题。",
"Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。",
"向量数据库是专门用于存储和查询高维向量数据的数据库,是 LLM 的记忆体。"
]
metadatas = [{"type": "bigdata"}, {"type": "bigdata"}, {"type": "ai"}]
ids = ["doc1", "doc2", "doc3"]
# 4. 写入数据 (Upsert)
# Chroma 会自动调用内置模型,将 text 转为 vector,然后存储
print(" 正在将文本转化为向量并存入 Chroma...")
collection.add(
documents=documents,
metadatas=metadatas,
ids=ids
)
# 5. 语义查询 (Retrieve)
query_text = "怎么让大模型拥有记忆?"
print(f" 用户提问: {query_text}")
results = collection.query(
query_texts=[query_text],
n_results=1 # TopK = 1
)
# 6. 输出结果
print("n 检索结果:")
print(f"匹配文档: {results['documents'][0][0]}")
print(f"距离/相似度: {results['distances'][0][0]}")

当你运行这段代码,虽然你的问题里没有“向量数据库”这五个字,但系统会精准地返回 doc3。
这就是 语义匹配 的魅力!它听懂了“大模型记忆”和“向量数据库”之间的潜在联系。
跑通了 Demo 只是第一步。作为未来的 AI 架构师,你需要关注的是整个数据流的流转。 一个标准的 RAG (Retrieval-Augmented Generation) 数据工程链路如下:

RecursiveCharacterTextSplitter。今天我们完成了从大数据工程师到 AI 工程师的第一次“脑机接口”升级。我们不再纠结于 WHERE id=1,而是开始思考数据在多维空间中的位置。
核心知识点回顾:
为了让你更直观地复习,我为你准备了本篇的思维导图:

用 Chroma 跑 Demo 很爽,但如果数据量到了 10 亿级 怎么办?内存爆了怎么办?写入太慢怎么办? 这正是我们大数据工程师的主场!
下一期,我们将深入 Phase 2,硬核拆解 Milvus 的分布式架构。你会发现,它简直就是向量版的 Kafka + HDFS!我们将探讨 Proxy、DataCoord、QueryNode 等组件是如何协同工作的。
互动话题: 你在运行上面的 Python 代码时,有没有遇到 OpenAI API 连接的问题?或者你觉得“文本切片”应该按什么规则切才最合理?欢迎在评论区留言,我们一起探讨!
(别忘了关注,不错过下一篇硬核干货!)