Korvus简介
Korvus是一个基于PostgreSQL的开源搜索SDK,它能够在单个数据库查询中统一整个RAG(检索增强生成)流程。Korvus结合了LLM、向量内存、嵌入生成、重排序、摘要和自定义模型等功能,极大地提高了性能并简化了搜索架构。
官方资源
入门指南
-
安装Korvus:
- Python:
pip install korvus
- JavaScript:
npm install korvus
- Rust: 在Cargo.toml中添加
korvus = "*"
- Python:
-
准备PostgreSQL数据库:
- 自托管:按照自托管指南设置
- 云服务:注册PostgresML Cloud
-
初始化Collection和Pipeline:
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())
- 插入文档并执行RAG查询:
async def rag():
query = "Is Korvus fast?"
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": "You are a friendly and helpful chatbot",
},
{
"role": "user",
"content": f"Given the context\n:{{CONTEXT}}\nAnswer the question: {query}",
},
],
"max_tokens": 100,
},
},
pipeline,
)
print(results)
asyncio.run(rag())
系统架构
Korvus利用PostgresML的pgml扩展和pgvector扩展,将整个RAG流程压缩在PostgreSQL内部。
社区资源
贡献指南
Korvus欢迎社区贡献。在提交拉取请求之前,请阅读贡献指南。
结语
Korvus为开发者提供了一个强大的工具,能够简化RAG流程并提高性能。通过本文提供的资源,您可以快速上手Korvus,并在您的项目中充分利用其功能。无论您是初学者还是经验丰富的开发者,Korvus都能为您的搜索需求提供优秀的解决方案。