返回市场
检索兔

检索兔

作者:madarco130 星标更新:2025-03-23

项目介绍

技术文档摘要

<h1 style="font-weight:normal"> <a href="https://ragrabbit.com"> <img src="./apps/saas/public/logo.svg" alt="RagRabbit" width=35> </a> &nbsp;RagRabbit&nbsp; <a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmadarco%2Fragrabbit&env=OPENAI_API_KEY,AUTH_USERNAME,AUTH_PASSWORD,AUTH_SECRET&envDescription=Get%20an%20OpenAI%20Api%20Key%20and%20set%20AUTH_USERNAME%20and%20AUTH_PASSWORD%20to%20the%20desired%20credentials%20to%20secure%20the%20admin%20section.%20Also%20be%20sure%20to%20enable%20the%20Postgres%20database%20integration&envLink=https%3A%2F%2Fplatform.openai.com%2Fapi-keys&demo-title=RagRabbit%20-%20AI%20Site%20Search%20and%20LLM.txt&demo-description=Site%20AI%20Search%20and%20LLM.txt%20in%20Minutes%2C%20Open%20Source%20with%201%20Click%20Deploy%20on%20Vercel.&demo-url=https%3A%2F%2Fragrabbit.vercel.app%2F&demo-image=https%3A%2F%2Fragrabbit.vercel.app%2Fopengraph-image.png&stores=%5B%7B%22type%22%3A%22postgres%22%7D%5D&root-directory=apps/saas"><img src="https://img.shields.io/badge/deploy%20on-vercel-black.svg"></a> <a href="https://github.com/madarco/ragrabbit/blob/master/license.md"><img src=https://img.shields.io/github/license/madarco/ragrabbit.svg?colorB=ff0000></a> <a href="https://www.npmjs.com/package/@ragrabbit/mcp"><img src="https://img.shields.io/npm/d18m/%40ragrabbit%2Fmcp?label=npm" /></a> <img src="https://img.shields.io/github/stars/madarco/ragrabbit" /> </h1>

自托管站点AI搜索、LLMs.txt、MCP服务器爬取您的内容。一键在Vercel上部署。 <br>

<p align="center">

RagRabbit

</p>

[使用Vercel部署](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmadarco%2Fragrabbit&env=OPENAI_API_KEY,AUTH_USERNAME,AUTH_PASSWORD,AUTH_SECRET&envDescription=获取一个OpenAI API密钥,并设置AUTH_USERNAME和AUTH_PASSWORD以所需的凭据来保护管理部分。同时确保启用PostgreSQL数据库集成&envLink=https%3A%2F%2Fplatform.openai.com%2Fapi-keys&demo-title=RagRabbit%20-%20AI%20站点搜索和LLMs.txt&demo-description=几分钟内实现站点AI搜索和LLMs.txt,开源并可在Vercel上一键部署&demo-url=https%3A%2F%2Fragrabbit.vercel.app%2F&demo-image=https%3A%2F%2Fragrabbit.vercel.app%2Fopengraph-image.png&stores=%5B%7B%22type%22%3A%22postgres%22%7D%5D&root-directory=apps/saas)

工作原理

RagRabbit 是一个使用LlamaindexpgVectorNext.js Turborepo应用程序。

特性:

  • 💬 聊天插件:嵌入式AI聊天代理和即时搜索
  • 🕸️ 网站爬虫:使用pgVector和PostgreSQL抓取和索引页面
  • 📄 LLMs.txt生成:完全可定制,支持目录重新排序
  • 🔌 MCP服务器:通过npx @ragrabbit/mcp访问Claude Desktop和Cursor IDE中的文档
  • 🛠️ 灵活性:认证、开源、API密钥访问
  • 🚀 易于部署:在Vercel上一键设置

集成:

演示

查看RagRabbit演示页面

RagRabbit演示

安装

要在Vercel上安装:

[使用Vercel部署](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmadarco%2Fragrabbit&env=OPENAI_API_KEY,AUTH_USERNAME,AUTH_PASSWORD,AUTH_SECRET&envDescription=获取一个OpenAI API密钥,并设置AUTH_USERNAME和AUTH_PASSWORD以所需的凭据来保护管理部分。同时确保启用PostgreSQL数据库集成&envLink=https%3A%2F%2Fplatform.openai.com%2Fapi-keys&demo-title=RagRabbit%20-%20AI%20站点搜索和LLMs.txt&demo-description=几分钟内实现站点AI搜索和LLMs.txt,开源并可在Vercel上一键部署&demo-url=https%3A%2F%2Fragrabbit.vercel.app%2F&demo-image=https%3A%2F%2Fragrabbit.vercel.app%2Fopengraph-image.png&stores=%5B%7B%22type%22%3A%22postgres%22%7D%5D&root-directory=apps/saas)

要求:

  • Node.js 20.x
  • PostgreSQL(带pgVector)
  • OpenAI API密钥
  • (可选)Trigger.dev API密钥

配置

设置以下环境变量:

  • OPENAI_API_KEY

对于用户名/密码登录:

  • ADMIN_USER
  • ADMIN_PASSWORD

对于电子邮件登录:

  • RESEND_AUTH=true
  • 限制访问特定电子邮件:RESEND_ALLOWED_EMAILS="test@test.com,foo@bar.com"
  • 不发送电子邮件而是记录登录链接(在Vercel日志中):SIMULATE_EMAILS=true

详见 .env.example 的完整列表。

如何使用

使用索引部分添加新的网址/网站进行索引,可以是一个单独的网址或递归爬取整个网站:

RagRabbit索引 RagRabbit爬虫模态

然后启动作业运行器(保持标签打开直到完成)

RagRabbit作业运行器

在LLMs.txt部分,您可以预览生成的LLMs.txt文件:

RagRabbit LLMs.txt

您可以通过以下代码片段将小部件嵌入到您的网站中:

聊天按钮

在页面底部嵌入一个按钮:

<script src="https://<已部署的应用程序>/widget.js"></script>

RagRabbit嵌入小部件按钮

聊天小部件

在页面任何位置插入一个搜索框:

RagRabbit小部件

<script src="https://ragrabbit.com/widget.js?type=search"></script>
<ragrabbit-search></ragrabbit-search>

使用React.js

"use client";

import Script from "next/script";

export function RagRabbitSearch() {
  return (
    <>
      <Script src="/widget.js?type=search" strategy="lazyOnload" />
      <style>{`
        ragrabbit-search .ragrabbit-search-input {
            padding: 6px 12px;
        }
      `}</style>
      <div className="ml-auto min-w-[300px] flex-1 sm:flex-initial">
        {/* @ts-ignore - 外部脚本挂载的自定义元素 */}
        <ragrabbit-search></ragrabbit-search>
      </div>
    </>
  );
}

MCP服务器

MCP服务器允许任何支持的AI客户端使用语义搜索从您的文档中检索页面。

Claude Desktop

添加一个自定义的mcp服务器,命名为您的产品名称,这样Claude AI在查找相关信息时就可以使用它。

claude_desktop_config.json(Claude -> 设置 -> 开发者 -> 编辑配置)中:

{
  "mcpServers": {
    "<您的文档名称无空格>": {
      "command": "npx",
      "args": ["@ragrabbit/mcp", "http://<RagRabbit安装>/", "<您的文档名称>"]
    }
  }
}

在Cursor IDE中

进入Cursor -> 设置 -> Cursor设置 -> MCP

添加一个新的MCP类型为命令,命令如下:

npx @ragrabbit/mcp", "http://<RagRabbit安装>/", "<您的文档名称>"

参数:

  • ragrabbit-url:(必需)您的RagRabbit实例的基本URL,例如https://my-ragrabbit.vercel.com/
  • name:(必需)文档搜索服务的自定义名称(默认为“RagRabbit”),以便AI知道在查找信息时使用它。

配置选项

聊天按钮

您可以通过向widget.js脚本标签添加以下参数来配置聊天按钮:

buttonText

<script src="https://ragrabbit.com/widget.js?buttonText=询问AI"></script>

搜索小部件

您可以通过添加以下参数并使用mountSearch调用来配置搜索小部件:

searchPlaceholder

<div id="search-container"></div>
<script>
  window.mountSearch("search-container", { searchPlaceholder: "搜索文档..." });
</script>

集成

Fumadocs

创建一个组件以替换搜索对话框:

pnpm add @ragrabbit/search-react
"use client";
import type { SharedProps } from "fumadocs-ui/components/dialog/search";
import { RagRabbitModal } from "@ragrabbit/search-react";

export default function SearchDialog({ open, onOpenChange }: SharedProps) {
  return <RagRabbitModal
    domain="http://localhost:3000/"
    open={open}
    onOpenChange={onOpenChange}
    />;
}

然后在layout.tsx中设置它:

<RootProvider
  search={{
    SearchDialog,
  }}
>
  ...
</RootProvider>

可选地添加浮动聊天按钮:

"use client";
import { RagRabbitChatButton } from "@ragrabbit/search-react";

export default function ChatButton() {
  return <RagRabbitChatButton domain="http://localhost:3000/" />;
}

并在layout.tsx中添加它:

<body className="flex flex-col min-h-screen">
  <ChatButton />
  ...

开发

# 启动数据库(需要Docker)
pnpm dev:utils # 启动带有pgvector的postgresql、Storybook和Drizzle ORM Studio

# 启动应用
cd apps/saas
pnpm dev

目录结构:

RagRabbit是一个使用Turborepo的Next.js单体仓库,具有模块化设计和独立包。

apps/
├── docs -> 文档站点
├── saas -> 主要应用
└── web -> 网站
packages/
├── db -> 使用Drizzle ORM的数据库
├── auth -> 使用Auth.js的认证
├── core -> 共享工具
├── design -> 设计系统
├── rag -> 包含LlamaIndexTS的LLM和RAG包
├── jobs -> 使用Trigger.dev的作业运行器
└── storybook -> 一个Next.js Storybook应用
.cursorrules -> 细调的Cursor规则,包含所有与单体仓库工作的位置

作者

Marco D'Alia - @madarco - LinkedIn

许可证

MIT