在现代AI应用中,向量嵌入已成为高效处理和存储文本数据的重要方法。Google Cloud SQL 是一个完全托管的关系型数据库服务,支持高性能、无缝集成和卓越的可扩展性。本文将详细介绍如何使用Cloud SQL for MySQL存储向量嵌入,并利用MySQLVectorStore类实现快速向量检索。
技术背景介绍
Google Cloud SQL 支持 PostgreSQL、MySQL 和 SQL Server 数据库引擎,并能通过LangChain扩展您的数据库应用程序,以构建AI驱动的体验。本教程特别关注MySQL实例,并指导您如何在Cloud SQL数据库中存储和检索向量嵌入。
核心原理解析
通过MySQL的云功能增强,使得在数据库中存储和检索向量成为可能。结合LangChain库的MySQLVectorStore类,我们能够快速建立一个支持向量检索的数据库表。
代码实现演示
以下是实现存储和检索向量嵌入的完整代码流程。
1. 环境准备
首先,您需要在Google Cloud中配置项目和Cloud SQL实例。
# 设置Google Cloud项目
PROJECT_ID = "my-project-id" # 填入您的Google Cloud项目ID
!gcloud config set project {PROJECT_ID}
2. 初始化数据库连接
使用MySQLEngine.from_instance()创建数据库引擎。
from langchain_google_cloud_sql_mysql import MySQLEngine
engine = MySQLEngine.from_instance(
project_id=PROJECT_ID,
region="us-central1",
instance="my-mysql-instance",
database="my-database"
)
3. 初始化表格
通过init_vectorstore_table()初始化适用于向量存储的表。
engine.init_vectorstore_table(
table_name="vector_store",
vector_size=768 # 使用VertexAI的textembedding-gecko模型
)
4. 创建嵌入类实例
启用Vertex AI API,并创建嵌入模型实例。
!gcloud services enable aiplatform.googleapis.com
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest",
project=PROJECT_ID
)
5. 初始化MySQLVectorStore
使用数据库引擎和嵌入模型实例化向量存储。
from langchain_google_cloud_sql_mysql import MySQLVectorStore
store = MySQLVectorStore(
engine=engine,
embedding_service=embedding,
table_name="vector_store",
)
6. 添加和检索文本
添加文本并进行向量搜索。
import uuid
all_texts = ["Apples and oranges", "Cars and airplanes", "Pineapple", "Train", "Banana"]
metadatas = [{"len": len(t)} for t in all_texts]
ids = [str(uuid.uuid4()) for _ in all_texts]
store.add_texts(all_texts, metadatas=metadatas, ids=ids)
# 搜索文本
query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs[0].page_content) # 输出 "Pineapple"
应用场景分析
这种向量存储方法适用于需要在大型文本数据集中快速检索相似内容的应用场景,如推荐系统、智能检索和文本分类等。
实践建议
- 在生产环境中,建议固定嵌入模型的版本以确保结果一致。
- 定期备份数据库,并监控查询性能,确保在大规模数据操作中维持高效。
- 可以通过调整表格结构和索引来优化存储和检索性能。
如果遇到问题欢迎在评论区交流。
—END—
1万+



被折叠的 条评论
为什么被折叠?



