korvus

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 搜索知识 🍴 复刻 51 🐛 待处理 9 👀 关注 14
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 1474
维护状态 低维护
是否开源 开源
定价模式 🏷️完全免费 开源项目,MIT许可证,完全免费,可自行部署使用。

项目预览

korvus 项目界面预览图
图片来源:项目官网

项目数据

分类搜索知识
开发团队postgresml
定价模式🏷️完全免费
价格说明开源项目,MIT许可证,完全免费,可自行部署使用。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言Rust
技术栈/模型ai,embeddings,javascript,llm,ml,python,rag,search,sql
GitHub 星标★ 1474
上线时间2024-06-24 00:00:00
代码更新2025-01-31
仓库体积319 KB
本站数据更新2026-11-09
维护状态低维护
收录时间2026-08-09
浏览次数2

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1474

技术标签

使用教程

ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。

难度:入门 约 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": "\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_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

上一篇:CAG

下一篇:Awesome-LLM-RAG

同类项目推荐

openserp 开源

自建搜索 API,六大引擎结果一键拿

Self-hosted web search for AI agents and SEO. Google, Bing, Yandex, Baidu, DuckDuckG···

★ 1564 2026-10-08
chatgpt_system_prompt 开源

看透 GPT 系统提示词,搞懂提示注入怎么玩

A collection of GPT system prompts and various prompt injection/leaking knowledge.

★ 10842 2026-10-17
VideoRAG 开源

把视频变成可检索的知识库,直接问答还能给依据

VideoRAG: Retrieval-Augmented Generation over Video Corpus

★ 90 2026-08-09
Aix-DB 开源

一句话问数据,自动出图出结论

Aix-DB 基于 LangChain/LangGraph 框架,结合 MCP Skills 多智能体协作架构,实现自然语言···

★ 2266 2026-09-12
tenk 开源

直接问 SEC 文件,投资问题秒回答案

Chat with SEC filings for any investment question

★ 134 2026-08-09
Vera 开源

本地离线搜索代码,精准定位符号和文件

Local code search combining BM25, vector similarity, and cross-encoder reranking. Pa···

★ 123 2026-08-09
chatgpt-custom-knowledge-chatbot 开源

上传你的文档,马上拥有懂业务的问答机器人

This open source chatbot project lets you create a chatbot that uses your own data t···

★ 138 2026-08-09
SCM 开源

用一句话搜出本地图片和视频里的画面

Multimodal visual memory search on macOS

★ 524 2026-11-01
Awesome-World-Models 开源

一页看懂世界模型论文、代码与落地方向

A comprehensive list of papers for the definition of World Models and using World Mo···

★ 2056 2026-09-29