🔎 Redis arXiv 搜索
此仓库是 arxiv 论文搜索应用的官方代码库, 托管于: https://docsearch.redisvl.com
Redis 是一个高性能、生产就绪的矢量数据库,可以用于多种应用程序。在这里我们展示了 Redis 矢量搜索在文档检索用例中的应用。阅读更多关于 AI 驱动搜索的信息, 请参阅我们的合作伙伴 Data Science Dojo 发布的技术博客文章。
数据集
arXiv 论文数据集来自以下 Kaggle 链接。arXiv 通常用于各种领域的科学研究。暴露一个语义搜索层,能使用自然人类语言来发现相关的论文。
应用
此应用程序构建为一个单页面应用程序 (SPA),包含以下组件:
- Redis Stack 用于矢量数据库
- RedisVL 用于 Python 矢量数据库客户端
- FastAPI 用于 Python API
- Pydantic 用于模式和验证
- React (配有 Typescript)
- Docker Compose 用于开发
- MaterialUI 用于一些 UI 元素/组件
- React-Bootstrap 用于一些 UI 元素
- Huggingface, OpenAI, 和 Cohere 用于创建矢量嵌入
一些灵感来源于此 Cookiecutter 项目 并被转变为一个 SPA 应用程序,而不是采用分离前端服务器的方式。
嵌入提供商
嵌入表示原始文本的语义特性, 并使矢量相似性搜索成为可能。此应用程序默认支持 HuggingFace
, OpenAI
和 Cohere
嵌入。
提供商 | 嵌入模型 | 必需的? |
---|---|---|
HuggingFace | sentence-transformers/all-mpnet-base-v2 | 是 |
OpenAI | text-embedding-ada-002 | 是 |
Cohere | embed-multilingual-v3.0 | 是 |
对不同的嵌入提供商感兴趣? 欢迎打开 PR 并提出建议添加。
想使用列出的模型之外的其他模型? 设置 .env
文件中以下环境变量 (见下文) 即可更改:
SENTENCE_TRANSFORMER_MODEL
OPENAI_EMBEDDING_MODEL
COHERE_EMBEDDING_MODEL
🚀 运行应用
- 在运行应用之前,安装 Docker Desktop。
- 克隆 (并可以选择 fork) 此 Github 仓库到你的机器:
$ git clone https://github.com/RedisVentures/redis-arXiv-search.git
- 创建
.env.template
文件的副本:$ cd redis-arXiv-search/ $ cp .env.template .env
- 决定要使用的 Redis 类型, 选择以下一种方法
- Redis Stack 作为本地 docker 容器运行 Redis。
- Redis Cloud 将在云中代表你管理 Redis 数据库。
Redis Stack Docker (本地)
在本地使用 Redis Stack 不需要额外步骤。然而,它会占用更多的计算机资源,并且有性能限制。
使用提供的 docker-compose
文件在本地运行此应用程序:
$ docker compose -f docker-local-redis.yml up
Redis Cloud
-
获取一个免费的 Redis 云数据库。确保包括搜索模块。
-
将
REDIS_HOST
,REDIS_PASSWORD
, 和REDIS_PORT
环境变量添加到.env
文件中。 -
运行应用:
$ docker compose -f docker-cloud-redis.yml up
自定义 (可选)
- 您可以使用
data/
目录中的 Jupyter Notebook 来创建论文嵌入和元数据。输出的 JSON 文件将存储在data/
目录中,并在创建容器时使用。 - 使用
./build.sh
脚本基于应用程序源代码和数据集变化构建自己的 docker 镜像。 - 如果您希望使用 K8s 而不是 Docker Compose,我们有一些 资源来帮助您入门。
React 开发环境
在交互式环境中构建前端通常更加容易,可以实时测试变化。
- 使用上述步骤部署应用程序。
- 安装包 (您可能需要使用
npm
安装yarn
)$ cd frontend/ $ yarn install --no-optional
- 使用
yarn
从您的计算机提供应用程序服务$ yarn start
- 在浏览器中导航至
http://localhost:3000
。
您对前端代码的所有更改都将在半实时显示中反映。
故障排除
有时您需要清除一些 Docker 缓存的工件。运行 docker system prune
, 重启 Docker Desktop, 然后重试。
此项目由 Redis 在诚信基础上维护。请在 GitHub 上打开一个 issue,我们会尽量及时响应。