什么是 Headless Vector Search?
Headless Vector Search 是 Supabase 推出的一个创新工具包,旨在为任何文档站点提供高效的向量/相似度搜索功能。它采用无头架构,这意味着它可以灵活地集成到现有的网站中,而无需更改前端界面。
这个工具包的核心目标是让开发者能够轻松地为他们的知识库添加智能搜索和问答功能,从而大大提升用户体验。通过利用先进的向量嵌入和相似度搜索技术,Headless Vector Search 能够理解查询的语义,并返回最相关的结果。
工作原理
Headless Vector Search 的工作流程非常直观且高效:
-
初始化数据库: 该工具包会在你的 Supabase 数据库中创建一个新的
docs
schema。 -
文档嵌入: 通过配套的 GitHub Action,你的 Markdown 文档会被自动处理并以向量嵌入的形式存储到数据库中。
-
查询处理: Headless Vector Search 提供了一个 Edge Function,负责处理用户查询,并将其转换为类似 ChatGPT 的响应。
这种设计使得整个过程既自动化又高度可定制,让开发者可以专注于improving their documentation and user experience.
技术栈
Headless Vector Search 采用了一系列先进的技术:
- Supabase: 提供数据库存储和 Edge Functions 运行环境。
- OpenAI: 用于生成文本嵌入和完成查询响应。
- GitHub Actions: 自动化文档处理和嵌入生成流程。
这种技术组合确保了系统的高性能、可扩展性和易用性。
设置步骤
要开始使用 Headless Vector Search,请按照以下步骤操作:
-
创建新的 Supabase 项目: 访问 database.new 快速创建。
-
克隆 Headless Vector Search 仓库到本地。
-
将本地仓库链接到远程 Supabase 项目:
supabase link --project-ref XXX
-
应用数据库迁移:
supabase db push
-
设置 OpenAI API 密钥:
supabase secrets set OPENAI_API_KEY=sk-xxx
-
部署 Edge Functions:
supabase functions deploy --no-verify-jwt
-
在 Supabase Dashboard 的 设置 中暴露
docs
schema。 -
在你的知识库仓库中设置
supabase-vector-embeddings
GitHub Action。
完成这些步骤后,你就可以看到数据库中自动填充的嵌入向量了。
使用方法
-
在 Supabase Dashboard 的 Functions 部分找到
vector-search
Edge Function 的 URL。 -
在你的应用程序中,向该端点发送用户查询,即可接收来自 OpenAI 的流式响应。
以下是一个使用 cURL 的简单示例:
curl -i --location --request GET 'https://your-project-ref.functions.supabase.co/vector-search?query=What%27s+Supabase%3F'
对于更复杂的集成,你可以使用 EventSource API 来处理流式响应。这里有一个简化的 JavaScript 示例:
const onSubmit = (e) => {
e.preventDefault();
answer.value = "";
isLoading.value = true;
const query = new URLSearchParams({ query: inputRef.current.value });
const projectUrl = `https://your-project-ref.functions.supabase.co`;
const queryURL = `${projectUrl}/${query}`;
const eventSource = new EventSource(queryURL);
eventSource.addEventListener("error", (err) => {
isLoading.value = false;
console.error(err);
});
eventSource.addEventListener("message", (e) => {
isLoading.value = false;
if (e.data === "[DONE]") {
eventSource.close();
return;
}
const completionResponse = JSON.parse(e.data);
const text = completionResponse.choices[0].text;
answer.value += text;
});
isLoading.value = true;
};
实际应用案例
Headless Vector Search 已经在一些知名项目中得到了应用。最突出的例子是 docs.supabase.com。在该文档站点中,用户可以使用 cmd+k 快捷键来访问智能搜索功能,体验 Headless Vector Search 的强大之处。
开源贡献
Headless Vector Search 是一个开源项目,欢迎社区贡献。目前,该项目在 GitHub 上已经获得了 152 颗星星和 27 次分支。如果你对改进这个工具感兴趣,可以查看项目仓库并参与贡献。
许可证
Headless Vector Search 采用 MIT 许可证,这意味着你可以自由地使用、修改和分发这个工具,只需保留原始版权和许可声明。
结语
Headless Vector Search 为开发者提供了一个强大而灵活的工具,用于为文档站点添加智能搜索和问答功能。通过结合 Supabase、OpenAI 和 GitHub Actions 的力量,它简化了向量搜索的实现过程,使得即使是小型团队也能为他们的用户提供类似 ChatGPT 的交互体验。
随着人工智能和自然语言处理技术的不断发展,我们可以期待 Headless Vector Search 在未来会变得更加强大和易用。无论你是在构建一个新的文档站点,还是想要升级现有的知识库,Headless Vector Search 都是一个值得考虑的解决方案。
通过采用这种创新的搜索方法,你可以显著提升用户体验,让信息检索变得更加直观和高效。在当今信息爆炸的时代,为用户提供精准、相关的搜索结果比以往任何时候都更加重要。Headless Vector Search 正是为此而生,它将成为众多开发者和内容创作者的得力助手。