我的项目是一个使用ReactJS Vite Framework,用于数据存储的MongoDB,用于用户身份验证和授权的JWT的PDFCHAT应用程序,以及带有Express.js的Node.js。它还利用各种库和工具进行有效的开发,包括用于环境变量管理的DotEnv,Langchain及其矢量商店进行语言处理,用于文件上传的multer以及向后端提出请求的AXIO。该项目的样式配有尾风CSS和ShadCN框架,可用于光滑的用户界面。
在后端,我使用带有Express.js的Node.js来处理请求,并使用MongoDB来存储用户信息并管理用户登录。为了确保事情安全,我使用JSON Web令牌进行用户身份验证,确保只有授权用户才能访问项目的某些部分。
对于处理PDF文件,我使用了一个名为Multer的工具将文件及其位置存储在数据库中。然后,我处理了上传的PDF,将它们分解成较小的部分,然后将它们存储在Langchain提供的HNSW矢量商店中。这次旅程扩大了我的技能,使我更好地了解了Langchain和Rag等先进技术所提供的可能性。
在运行项目之前,您需要设置环境和配置变量:
克隆存储库:首先将此存储库克隆到本地计算机。
前端设置:
npm install以安装前端依赖关系。npm run dev启动前端。后端设置:
npm install以安装后端依赖关系。.env文件并设置以下变量:PORT :服务器上的端口号将运行。(默认情况下为8080)username :MongoDB Atlas Connection用户名。password :MongoDB Atlas连接密码。JWT_SECRET :JWT代币生成的秘密。OPENAI_API_KEY :OpenAI API密钥。数据库设置:
开始后端:
npm start启动后端服务器。访问应用程序:
http://localhost:5173在浏览器中访问该应用程序。http://localhost:8080或http://localhost:PORT以访问后端部分应用程序。 项目结构分为两个主要目录:
frontend :包含带打字稿的前端的所有ReactJS代码。backend :使用express.js包含node.js服务器的后端逻辑。 我已经使用JWT(JSON Web令牌)进行用户身份验证和授权。当用户注册或登录时,他们会收到一个代币,必须发送随后的请求以访问授权路由。
用户信息存储在灵活的NOSQL数据库MongoDB中。用户互动可牢固地存储和检索用户数据。
我已经使用Multer,这是一种处理文件上传的中间件,允许用户上传图像或文档之类的文件。此功能通过支持多媒体内容来增强用户体验。
前端使用尾风CSS和ShadCN框架设计了用户友好的接口。它为用户提供了响应迅速且具有视觉吸引力的体验。
后端提供了各种API端点来管理用户数据,身份验证和文件上传。这些终点是在代码中记录的,您可以在后端代码库中找到更多详细信息。