korvus

把 RAG 全流程塞进一条 SQL,搜索问答一步到位

Korvus 是一个基于 Postgres 的搜索 SDK,它将完整的 RAG(检索增强生成)流程统一到单个数据库查询中。它解决了传统 RAG 架构中需要拼接向量数据库、嵌入模型、LLM 等多个组件,导致系统复杂、延迟高、维护难的问题。Korvus 通过 Postgres 扩展和原生 SQL 查询,将文本嵌入、向量检索、重排序、生成等步骤集成在一起,提供 Python、JavaScript、Rust 和 C 的绑定。其核心能力包括:支持多种嵌入模型和 LLM 提供商、内置混合搜索(向量+全文)、自动处理元数据过滤、以及通过 SQL 即可完成从文档入库到生成回答的完整流程。开发者只需调用简单的 API,即可在数据库层面实现高性能的语义搜索和问答,无需额外维护中间件。

开源 free 搜索知识
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1471
维护状态 低维护
是否开源 是
定价模式 free

项目数据

分类搜索知识
开发团队postgresml
所属国家
定价模式free
价格说明开源项目,MIT许可证,完全免费,可自行部署使用。
访问状态
是否开源是
开源协议MIT
主要语言Rust
技术栈/模型ai,embeddings,javascript,llm,ml,python,rag,search,sql
GitHub 星标★ 1471
30天Star增速
HF 下载量
上线时间2024-06-24 00:00:00
最近更新2026-09-13 00:00:00
维护状态低维护
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数0

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 5 步

环境要求

  • Python 环境(可通过 pip 安装包)
  • 一个可用的 Postgres 数据库连接串(Korvus 基于 Postgres 运行)
  • pip 包管理工具
  • 能访问嵌入模型与 LLM 服务的网络环境

安装与启动步骤

  1. 1安装 Korvus SDK

    使用 pip 从 PyPI 安装 korvus,同时获得 Python 绑定。建议在虚拟环境中执行。

    pip install korvus
  2. 2配置数据库连接

    把 KORVUS_DATABASE_URL 设为你的 Postgres 连接串,README 要求用该环境变量传入。

    export KORVUS_DATABASE_URL="postgres://user:password@host:5432/dbname"
  3. 3初始化集合与流水线

    创建 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())
  4. 4写入文档

    用 upsert_documents 批量插入带 id 与 text 的文档,SDK 会自动完成切分与向量化。

    async def upsert_documents():
        documents = [
            {"id": "1", "text": "Korvus is incredibly fast and easy to use."},
            {"id": "2", "text": "Tomatoes are incredible on burgers."},
        ]
        await collection.upsert_documents(documents)
    
    asyncio.run(upsert_documents())
  5. 5执行 RAG 查询

    调用 collection.rag(),一次查询内完成向量检索与 LLM 生成,返回最终回答。

    async def rag():
        query = "Is Korvus fast?"
        print(f"Querying for response to: {query}")
        results = await collection.rag(
            {
                "CONTEXT": {
                    "vector_search": {
                        "query": {
                            "fields": {"text": {"query": query}},
                        },
                        "document": {"keys": ["id"]},
                        "limit": 1,
                    },
                    "aggregate": {"join": "
    "},
                },
                "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
    :{{CONTEXT}}
    Answer the question: {query}",
                        },
                    ],
                    "max_tokens": 100,
                },
            },
            pipeline,
        )
        print(results)
    
    asyncio.run(rag())

关键配置

配置项必填说明示例
KORVUS_DATABASE_URL是Postgres 数据库连接串,Korvus 所有数据与查询都走它postgres://user:password@host:5432/dbname
text.splitter.model否文档切分模型,示例使用 recursive_characterrecursive_character
text.semantic_search.model否语义检索使用的嵌入模型名称Alibaba-NLP/gte-base-en-v1.5
chat.model否生成回答所用的 LLM 模型meta-llama/Meta-Llama-3-8B-Instruct
chat.max_tokens否生成回答的最大 token 数100

如何确认成功

运行最后一段 RAG 脚本,终端能打印出查询与 results(模型基于检索上下文生成的回答),即表示流程跑通。

常见问题

Q:没有 Postgres 数据库能用吗?

A:不能。Korvus 构建在 Postgres 之上,必须提供 KORVUS_DATABASE_URL 指向可用数据库,README 未给出数据库的安装步骤。

Q:提示缺少 KORVUS_DATABASE_URL 怎么办?

A:确认已在本机执行 export KORVUS_DATABASE_URL="你的连接串",且同一终端窗口下运行 Python 脚本,环境变量不会跨窗口保留。

Q:为什么要用 asyncio.run?

A:README 中 add_pipeline、upsert_documents、rag 都是 async 函数,必须用 asyncio 事件循环执行,否则协程不会运行。

Q:检测不到文档或检索不到内容?

A:先执行 upsert_documents 写入文档并等待向量化完成,再做 rag 查询;同时确认检索的字段名 text 与写入时一致。

Q:能不能换成别的嵌入或对话模型?

A:可以,Pipeline 与 chat.model 都只是配置项,换成本地或远程可用的模型名即可,具体支持范围参考官方文档。

注意事项

  • README 只提供 pip 安装方式,未提供 Docker、源码编译或 Rust/JS 绑定的安装命令,请勿自行臆造。
  • 所有示例都是异步接口,脚本中必须用 asyncio.run 驱动。
  • Pipeline 的嵌入模型与 chat 的 LLM 首次调用可能需要下载或联网,注意网络与耗时。
  • 更多用法见官方文档 https://postgresml.org/docs/open-source/korvus/

核心亮点

  • 单查询完成嵌入、检索、重排、生成,省去多系统集成和网络开销
  • 基于 Postgres 扩展,数据与索引同库,事务一致性和备份简单
  • 提供 Python、JS、Rust、C 多语言绑定,适配不同技术栈

不足之处

  • 依赖 Postgres,对非 PG 用户迁移成本高
  • 文档/社区待观察

适用场景

  • 需要快速构建 RAG 问答应用的团队,减少架构复杂度
  • 已有 Postgres 基础设施,希望统一数据与向量检索的场景
  • 对查询延迟敏感,需要避免跨服务调用开销的实时搜索

替代项目

pgvector、Lantern、PostgresML

项目介绍

korvus 是搜索知识领域的开源项目,由 postgresml 开发,2024 年首次发布。

在全站 13,090 个收录项目中,它的 GitHub 星标数(1,471)位列前 30%,在搜索知识分类中处于中上游。

项目已超过三个月没有代码更新,维护节奏明显放缓,最近一次代码更新于 2026-09-13。MIT许可证,完全免费,可自行部署使用。

它主要面向的使用场景是:需要快速构建RAG问答应用的团队,减少架构复杂度。同类可对比的替代方案包括 pgvector、Lantern、PostgresML。

上一篇:CAG

下一篇:Awesome-LLM-RAG

同类项目推荐

firecrawl 开源

网页抓取像喝水一样简单,开发者省下整周加班

The web data API to search, scrape, and interact at scale.

★ 183325 2026-08-09
contoso-chat 开源

一键跑通 Azure RAG 应用,从代码到评估部署全流程

This sample has the full End2End process of creating RAG application with Prompty an···

★ 766 2026-08-09
graphify 开源

整个代码库画成一张图,找问题一眼定位

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable k···

★ 120493 2026-08-09
ragflow 开源

让大模型用上你的私有知识,搭建可靠的企业级RAG应用

RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fu···

★ 91170 2026-08-09