项目介绍:ai-template
项目概述
ai-template 项目是一个智能对话系统,旨在帮助用户通过训练自定义的GPT模型,与特定的文件或网站进行对话。该项目提供了一种简单易用的接口,允许用户在任何文档或网页上进行训练,并以对话的形式获得相关信息。
功能概览
与文档或网站对话
用户可以:
- 对用户指定的网站进行训练;
- 对自己上传的文档进行训练;
- 构建基于对话历史的交流;
- 获得引自来源的信息。
该项目的用户界面风格类似于 [Perplexity]。
支持的文件格式
当前支持以下文件格式:
- .docx
- .md
- .txt
- .png
- .jpg
- .html
- .json
即将支持的文件格式包括:
- .csv
- .pptx
- notion
- next 13 app dir
- vercel ai sdk
训练过程
上传文件(API:/api/embed-file
)
- 文件被上传后,首先被清理成纯文本,然后分割成每1000字符的文档。
- 使用OpenAI的 "text-embedding-ada-002" 模型生成文档嵌入。
- 这些嵌入被存储在Pinecone一个命名空间中。
抓取网页(API:/api/embed-webpage
)
- 利用 [cheerio] 抓取网页,将其清理为纯文本,再分割成每1000字符的文档。
- 使用OpenAI的嵌入API为每个文档生成嵌入。
- 嵌入同样存储在Pinecone命名空间中。
查询响应
响应查询(API:/api/query
)
- 通过用户提供的提示生成单一嵌入。
- 使用该嵌入在向量数据库中进行相似性搜索。
- 相似性搜索结果用于构建GTP-3提示。
- GTP-3的响应会流式反馈给用户。
项目开启步骤
- 克隆仓库并安装依赖
npx degit https://github.com/Jordan-Gilliam/ai-template ai-template
cd ai-template
code .
npm i
- 配置 Pinecone
- 在 [pinecone] 创建一个免费账户。
- 建立一个新的 Pinecone 指数,维度为
1536
。 - 记录API密钥、环境名称(例如:
us-central1-gcp
)和索引名称(例如:mercury
)。
- 配置 OpenAI API
- 在 [openai] 创建并复制您的API密钥。
- 配置环境变量
cp .env.example .env.local
转到 .env.local
文件设置 OpenAI 和 Pinecone 的 API 密钥与环境配置。
- 启动应用
npm run dev
在浏览器中打开 http://localhost:3000 访问应用。
模板特性
- 使用 OpenAI API,支持生成嵌入和GTP-3响应。
- 集成 Pinecone。
- 包含 Nextjs API 路由(Edge 运行时)和流式传输。
- 使用 Tailwind CSS 进行样式设计。
- 支持
@next/font
字体及 Lucide 图标。 - 支持深色模式配置。
- 使用 Radix UI Primitives。
- 自动导入排序。
灵感来源
感谢 [@gannonh] 和 [@mayooear] 的优秀工作帮助启发了本模板。
嵌入工作原理
通过嵌入与向量搜索,使用 OpenAI 的 GPT-3 API 创建专用于特定领域知识的对话接口。嵌入是一种浮点数向量,代表文本字符串的“相关性”。高的余弦相似度表明文本字符串高度相关。
应用通过嵌入生成文档的向量表示,再利用向量搜索找到与查询最相似的文档,构造GTP-3提示生成并反馈响应给用户。