# 探索Google BigQuery中的高效向量搜索:从零到一的实战指南
在现代人工智能应用中,语义搜索已成为不可或缺的一部分。Google Cloud BigQuery Vector Search提供了一种在GoogleSQL中使用向量索引进行快速近似结果或使用暴力算法进行精确结果的语义搜索。本文旨在引导你使用LangChain框架构建端到端的数据和嵌入管理系统,并在BigQuery中实现可扩展的语义搜索。
## 主要内容
### 安装和环境配置
在开始操作前,你需要安装以下库:
```bash
%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"
安装完成后,重启Jupyter运行环境,以便使用新安装的包:
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
项目和环境设置
-
设置项目ID
如果不确定项目ID,可以通过以下命令获取:gcloud config list gcloud projects list
然后设置项目ID:
PROJECT_ID = "你的项目ID" # 设置项目ID ! gcloud config set project {PROJECT_ID}
-
设置区域
REGION = "us-central1"
-
设置数据集和表名
初始化BigQuery Vector Store使用的数据集和表名:
DATASET = "my_langchain_dataset" TABLE = "doc_and_vectors"
BigQuery Vector Store 实践
-
创建嵌入类实例
使用LangChain的VertexAIEmbeddings模型:
from langchain_google_vertexai import VertexAIEmbeddings embedding = VertexAIEmbeddings( model_name="textembedding-gecko@latest", project=PROJECT_ID )
-
初始化BigQueryVectorStore
自动创建BigQuery数据集和表:
from langchain_google_community import BigQueryVectorStore store = BigQueryVectorStore( project_id=PROJECT_ID, dataset_name=DATASET, table_name=TABLE, location=REGION, embedding=embedding, )
-
添加文本
添加待搜索的文本数据及其元数据:
all_texts = ["Apples and oranges", "Cars and airplanes", "Pineapple", "Train", "Banana"] metadatas = [{"len": len(t)} for t in all_texts] store.add_texts(all_texts, metadatas=metadatas)
-
执行搜索操作
-
基于文本内容搜索:
query = "I'd like a fruit." docs = store.similarity_search(query) print(docs)
-
基于向量搜索:
query_vector = embedding.embed_query(query) docs = store.similarity_search_by_vector(query_vector, k=2) print(docs)
-
过滤器搜索:
docs = store.similarity_search_by_vector(query_vector, filter={"len": 6}) print(docs) # 应只返回"Banana"
-
批量搜索:
results = store.batch_search( embeddings=None, queries=["search_query", "search_query"], )
-
常见问题和解决方案
- 访问稳定性问题: 在某些地区,由于网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。
- 嵌入存储:对于多模态数据,自定义预处理后生成嵌入可使用
add_texts_with_embeddings
方法。
总结和进一步学习资源
BigQuery Vector Search结合LangChain可以为开发者提供一种快速实现语义搜索的方法。在实践过程中,你可能会遇到配置和性能优化的挑战,灵活使用文档和官方指南是解决问题的关键。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---