Korvus 使用教程
1. 项目介绍
Korvus 是一个开源的搜索软件开发工具包(SDK),旨在通过单一数据库查询统一整个 RAG(Retrieval-Augmented Generation)管道。基于 PostgreSQL,Korvus 提供了 Python、JavaScript、Rust 和 C 语言的绑定,实现了高性能、可定制的搜索功能,同时最小化了基础设施的复杂性。
2. 项目快速启动
环境准备
在使用 Korvus 之前,您需要一个安装了 pgml 和 pgvector 扩展的 PostgreSQL 数据库。您可以选择以下两种方式之一:
- 自托管:自行设置数据库并安装 pgml 和 pgvector。具体步骤请参考官方的自托管指南。
- 托管服务:使用预装了 pgml 和 pgvector 的托管 PostgreSQL 服务。
安装 Korvus
通过以下命令安装 Korvus:
pip install korvus
初始化数据库连接
设置环境变量 KORVUS_DATABASE_URL
为您的数据库连接字符串:
export KORVUS_DATABASE_URL="your_database_connection_string"
创建集合和管道
在 Python 中创建一个集合和管道:
from korvus import Collection, Pipeline
import asyncio
collection = Collection("korvus-demo-v0")
pipeline = Pipeline(
"v1",
{
"text": {
"splitter": {
"model": "recursive_character"
},
"semantic_search": {
"model": "Alibaba-NLP/gte-base-en-v1.5"
}
}
}
)
async def add_pipeline():
await collection.add_pipeline(pipeline)
asyncio.run(add_pipeline())
插入文档
插入文档到集合中:
async def upsert_documents():
documents = [
{"id": "1", "text": "Korvus 是非常快速且易于使用的。"},
{"id": "2", "text": "番茄在汉堡上非常好。"},
]
await collection.upsert_documents(documents)
asyncio.run(upsert_documents())
执行 RAG 查询
执行一个 RAG 查询:
async def rag():
query = "Korvus 快吗?"
print(f"查询响应:
{query}
")
results = await collection.rag(
{
"CONTEXT": {
"vector_search": {
"query": {
"fields": {
"text": {
"query": query
}
}
},
"document": {
"keys": ["id"]
},
"limit": 1
},
"aggregate": {
"join": "\n"
}
},
"chat": {
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"messages": [
{
"role": "system",
"content": "你是一个友好且乐于助人的聊天机器人"
},
{
"role": "user",
"content": f"给定上下文
:{{CONTEXT}}
\n
回答问题:
{query}
"
}
],
"max_tokens": 100
}
},
pipeline
)
print(results)
asyncio.run(rag())
3. 应用案例和最佳实践
- 单次查询优化:尽可能在一个查询中完成所有操作,减少数据库往返次数,提高性能。
- 文档嵌入:使用高效的嵌入模型来提高搜索的相关性和速度。
- 管道管理:合理管理和配置管道,以适应不同的搜索场景和需求。
4. 典型生态项目
- PostgresML:一个基于 PostgreSQL 的机器学习平台,提供了 pgml 扩展,用于在 PostgreSQL 中进行机器学习操作。
- pgvector:一个用于向量化搜索的 PostgreSQL 扩展,与 Korvus 密切配合,提供高效的搜索能力。
以上就是关于 Korvus 的使用教程,希望对您有所帮助。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考