RAG Arena 是一个开源 Next.js 项目,由我的 mendable.ai 制作,它与 LangChain 交互,提供 RAG 聊天机器人体验,其中查询会收到多个响应。用户对这些响应进行投票,然后将其清晰地显示所使用的检索器,通过数据 RAG 方法来区分聊天机器人。该项目利用 Supabase 进行数据库操作,并具有显示数据库数据的实时排行榜。
确保您的系统上安装了pnpm
。如果没有,请通过以下方式安装:
npm install -g pnpm
克隆项目存储库:
git clone https://github.com/mendableai/rag-arena
导航到项目目录并安装依赖项:
cd RAG-arena
pnpm i
配置您的环境变量:
# probably in: https://platform.openai.com/api-keys
OPENAI_API_KEY=
# probably in: https://supabase.com/dashboard/ project>project settings>api
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PRIVATE_KEY=
# probably in: https://console.upstash.com/redis/
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
PRODUCTION=false
PYTHON_MICRO_SERVER=
启动开发(nextjs)Web服务器:
pnpm dev
cd python_service
poetry install
*(如果你没有诗歌,只需使用 pip install诗添加 id)
对于 Graph Rag 检索器,您需要构建图形存储,或者通过取消注释以下行让服务器自动运行“create_neo4j_graph_store”函数(本地化在/python_service/retrievers/neo4j_retriever.py
中):
# if not os.path.exists(storage_dir) or not os.listdir(storage_dir):
# create_neo4j_graph_store()
这将需要一段时间,具体取决于data/chunks
中使用的数据。最后,您的neo/storage
目录将填充本地图形存储的持久数据。
您将需要加载并缓存索引,以便可以使用 Graph RAG。 load_index()
函数在python_service/app.py
中为您执行此操作。因此,在第一次执行时,可能需要一段时间才能创建放置在python_service/index/cache
中的缓存 .pkl 文件。
poetry run flask run --debug
用浏览器打开http://localhost:3000查看结果。
app/api/ingest/route.ts
RecursiveCharacterTextSplitter
进行有效的文本分割。OpenAIEmbeddings
生成文档嵌入。SupabaseVectorStore
将处理后的文档存储在Supabase中。app/api/retrievers/dynamic-retriever/route.ts
actions/voting-system.ts
// calculation used for the elo
function calculateEloAdjustment(timesTested: number, averageTimesTested: number): number {
if (averageTimesTested === 0) return 10;
const adjustmentFactor = timesTested / averageTimesTested;
return (1 / adjustmentFactor) * 10;
}
id
、 retriever
、 elo
、 votes
、 times_tested
、 full_name
、 description
和link
。 (https://js.langchain.com/docs/modules/data_connection/retrievers/)
本节概述了app/api/retrievers/dynamic-retriever/tools/functions.ts
中定义的各种 RAG 函数,详细说明了它们在项目架构中的用途和实现。这些功能在文档 RAG 流程中发挥着至关重要的作用,利用不同的策略和技术来优化性能和准确性。
欢迎贡献!请遵循标准的分叉和拉取请求工作流程。确保您遵守项目中存在的编码风格和模式,并为新功能或错误修复编写测试。
RAG Arena 是开源的,并根据 MIT 许可证发布。有关详细信息,请参阅许可证文件。