用于提示的向量数据库
探索向量数据库如何存储和检索相关信息,以便有效地提供给 RAG 提示
用于提示的向量数据库 是 CoddyKit 上的免费 AI Prompt Engineering 课时。 这是第 3 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Prompt Engineering 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Prompt Engineering 课程共包含 3 节课。
什么是向量数据库
欢迎来到向量数据库(VDB)的世界!这些专用数据库为使用大型语言模型(LLM)带来了突破性改变。
VDB 将信息存储为数值向量,也就是数字列表。这样,它们就能快速找到与查询在“语义上相似”的数据,也就是说,这些数据具有相近的底层含义,而不仅仅是匹配关键词。
将语言表示为数字:嵌入
在数据进入 VDB 之前,数据会被转换为嵌入。嵌入是文本的数值表示形式:含义相近的词语或短语,在多维空间中彼此接近。
- 文本转向量:嵌入模型会将您的文本转换为向量。
- 保留语义:这些向量能够捕捉文本的语义含义。
- LLM 的语言:这就是 LLM 在内部“理解”和处理语言的方式。
在向量数据库中存储数据
您可以把向量数据库想象成一座高度有序的图书馆,其中每本书(或每段文本)都带有一个独特的数值指纹,也就是它的嵌入向量。
向 VDB 添加数据时,流程如下:
- 根据需要,将您的文本拆分成更小的片段。
- 将每个片段转换为嵌入向量。
- VDB 将该向量与原始文本及相关元数据一同存储。
相似性搜索的奥妙
VDB 的真正优势在于其执行相似性搜索的能力。它们不是匹配关键词,而是查找与查询向量在数值上“接近”的向量。
这意味着,如果您询问“犬类伙伴”,VDB 仍然可以检索出提到“狗”或“宠物”的文档,即使这些确切词语并未出现。它理解的是底层含义!
检索增强生成(RAG)中的 VDB
向量数据库是 RAG 系统“检索”步骤的核心组件。它们充当 LLM 可以访问的外部知识库。
简化后的流程如下:
- 用户提出问题。
- 将问题嵌入为向量。
- VDB 找到最相关的文档片段(向量)。
- 将这些片段作为上下文发送给 LLM,用于回答问题。
填充 VDB:示例代码
让我们看一个概念性的 Python 示例,了解如何将文档添加到向量数据库中。这个过程包括嵌入文本,然后存储生成的向量。
请记住,在实际应用场景中,这段代码需要特定的向量数据库客户端库和嵌入模型,因此这里只用于说明概念。
import numpy as np
# Imagine an embedding model function
def get_embedding(text):
# In a real scenario, this uses an LLM API
# or a local embedding model.
# For illustration, let's return a dummy vector.
return np.random.rand(128).tolist() # 128-dim vector
# Imagine a simplified VectorDB client
class SimpleVectorDB:
def __init__(self):
self.vectors = {} # Stores {id: {'vector': [...], 'text': '...'}}
def add_document(self, doc_id, text_content):
vector = get_embedding(text_content)
self.vectors[doc_id] = {'vector': vector, 'text': text_content}
print(f"Added '{text_content[:20]}...' (ID: {doc_id})")
# --- Main simulation ---
db = SimpleVectorDB()
db.add_document("doc1", "The capital of France is Paris.")
db.add_document("doc2", "Eiffel Tower is a landmark in Paris.")
db.add_document("doc3", "Berlin is the capital of Germany.")查询 VDB:示例代码
填充好向量数据库后,您就可以查询它来查找相关信息。查询本身也会先进行嵌入,然后 VDB 会搜索最接近的向量。
这段概念性 Python 代码演示了如何搜索语义相似的内容。
import numpy as np
from scipy.spatial.distance import cosine # For similarity
# (Re-using get_embedding and SimpleVectorDB conceptually)
def get_embedding(text):
return np.random.rand(128).tolist()
class SimpleVectorDB:
def __init__(self):
self.vectors = {}
def add_document(self, doc_id, text_content):
vector = get_embedding(text_content)
self.vectors[doc_id] = {'vector': vector, 'text': text_content}
def search(self, query_text, top_k=1):
query_vector = get_embedding(query_text)
scores = []
for doc_id, data in self.vectors.items():
doc_vector = data['vector']
# Cosine similarity: 1 - cosine distance
similarity = 1 - cosine(query_vector, doc_vector)
scores.append({'id': doc_id, 'text': data['text'], 'score': similarity})
# Sort by similarity in descending order
scores.sort(key=lambda x: x['score'], reverse=True)
return scores[:top_k]
# --- Main simulation ---
db = SimpleVectorDB()
db.add_document("doc1", "The capital of France is Paris.")
db.add_document("doc2", "Eiffel Tower is a landmark in Paris.")
db.add_document("doc3", "Berlin is the capital of Germany.")
user_query = "What is the capital city of France?"
results = db.search(user_query, top_k=2)
print(f"Query: '{user_query}'")
print("Top results:")
for res in results:
print(f"- Text: '{res['text']}' (Score: {res['score']:.2f})")使用 VDB 的主要优势
将向量数据库集成到您的 RAG 工作流中,可以带来显著优势:
- 语义搜索:根据含义而非仅根据关键词查找结果。
- 减少幻觉:通过事实性外部数据为 LLM 提供依据,使响应更可靠。
- 可扩展性:高效处理海量非结构化数据。
- 实时更新:可以轻松使用新信息进行更新,让 LLM 的上下文保持最新。
VDB 的重要注意事项
要让您的向量数据库配置发挥最佳性能,请考虑以下几点:
- 嵌入模型的选择:嵌入的质量会直接影响搜索准确性。
- 分块策略:您拆分文档的方式(例如按段落或句子拆分)会影响检索粒度。
- 数据时效性:定期使用新信息更新 VDB,确保 LLM 获得最新的上下文。
- 元数据:将有用的元数据与向量一起存储,以便进行筛选并改善检索效果。
快速检查:RAG 中的向量数据库
向量数据库在提升 LLM 的性能和可靠性方面发挥着关键作用。现在,让我们测试一下您对向量数据库在检索增强生成(RAG)系统中主要功能的理解。
回顾:VDB 与您的 LLM
本课中,我们探索了向量数据库及其在现代人工智能应用中的重要作用,尤其是在 RAG 中的作用。
- VDB 存储能够捕捉文本含义的数值嵌入向量。
- VDB 支持强大的语义搜索,能够根据上下文查找信息。
- VDB 通过提供外部事实数据显著增强 LLM,从而带来更准确、更可靠的输出。
掌握 VDB 是构建稳健、智能的人工智能系统的关键!
常见问题解答
「用于提示的向量数据库」课时是免费的吗?
是的 — 「用于提示的向量数据库」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Prompt Engineering 课程的其余内容,请升级到 CoddyKit PRO。 AI Prompt Engineering 课程共包含 3 节课。
「用于提示的向量数据库」这节课中我会学到什么?
探索向量数据库如何存储和检索相关信息,以便有效地提供给 RAG 提示 你通过在浏览器中直接运行的动手代码来练习 AI Prompt Engineering,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Prompt Engineering 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Prompt Engineering 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 3 节。
「用于提示的向量数据库」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Prompt Engineering 课中编写并运行代码吗?
能。每节 AI Prompt Engineering 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用外部数据进行提示
- 检索增强生成(RAG)
- 用于提示的向量数据库