Langchain、Pinecone 和 GPT 与 Next.js 全栈入门项目
这是一个基础的起始项目,用于使用以下工具和API构建项目:
- Next.js
- LangchainJS
- Pinecone 向量数据库
- GPT3
当我开始深入研究这些内容时,我感觉尽管我理解某些单独的部分,但很难将所有内容拼接成一个连贯的项目。我希望这个项目对任何想用这些技术栈构建项目并需要一个起点的人有所帮助。
我们在构建什么
我们正在构建一个应用程序,该应用程序将文本(文本文件)嵌入到向量中,并将它们存储到 Pinecone 中,同时允许对数据进行语义搜索。
对于任何对语义搜索感到好奇的人,这里有一个概述(直接取自 ChatGPT4):
语义搜索是指一种搜索方法,它理解用户的意图和搜索查询的上下文含义,而不仅仅是匹配关键词。
它使用自然语言处理和机器学习来解释查询背后的语义或含义。这就带来了更准确和相关的搜索结果。语义搜索可以考虑用户意图、查询背景、同义词识别和自然语言理解。其应用范围从网页搜索引擎到个性化推荐系统。
运行应用程序
在本节中,我将引导你如何部署和运行此应用程序。
先决条件
要运行此应用程序,您需要以下内容:
启动和运行
要在本地运行该应用程序,请按照以下步骤操作:
- 克隆此仓库
git clone git@github.com:dabit3/semantic-search-nextjs-pinecone-langchain-chatgpt.git
-
进入目录并使用 NPM 或 Yarn 安装依赖项
-
复制
.example.env.local
并重命名为.env.local
,然后更新你的 API 密钥和环境。确保你的环境是 Pinecone 为你提供的实际环境,如
us-west4-gcp-free
-
(可选)- 将你自己的自定义文本或 Markdown 文件添加到
/documents
文件夹中。 -
运行应用程序:
npm run dev
需要知道
在创建嵌入和索引时,索引完全初始化可能需要 2-4 分钟。在 utils
中有一个 180 秒的 settimeout 函数,等待索引创建完成。
如果初始化时间较长,那么第一次尝试创建嵌入时将失败。如果发生这种情况,请访问 Pinecone 控制台 观看并等待你的索引状态完成创建,然后再次运行该函数。
运行查询
预配置的应用数据关于 Lens 协议开发者文档,因此除非你用自己的数据替换它,否则它只能理解关于它的问题。以下是一些你可以用默认数据来问的问题
- Lens 和传统社交平台的区别是什么?
- Lens SDK 和 Lens API 的区别是什么?
- 如何批量查询 Lens 数据?
该项目的基础由 这个 Node.js 教程 指导完成,并进行了一些重构并转移到 Next.js。你可以在 Twitter 上关注他们的动态 这里!
获取你的数据
我推荐查看 GPT Repository Loader,它可以轻松地将任何 GitHub 仓库转换为文本格式,保留文件结构和内容,并使用我的代码库将其切分并保存到 Pinecone。