QChatAi
1.0.0

登錄:首先從著陸頁登錄。登錄後,您會看到一個Let's Start按鈕。單擊此按鈕開始。
創建一個項目:單擊Let's Start後,您可以創建一個項目。提供標題,說明並上傳PDF文件。 PDF將上傳到雲桶(例如S3),並存儲在PostgreSQL中。
PDF處理:在後端,處理PDF文件以生成內容的向量嵌入。然後將這些嵌入存儲供將來使用。
異步處理:整個處理使用BullMQ進行異步處理,以確保其高效且不會阻止其他操作,從而使您無需等待聊天界面就可以進行。
儀表板監視:您可以在前端儀表板上查看所有項目。每個項目都會顯示一個狀態:“創建”,“失敗”或“創建”。這使您可以跟踪進度並知道何時準備好項目。如果發生任何問題,您將能夠看到狀態並採取適當的措施。
聊天接口:準備好項目後,您可以將其打開以訪問用戶友好的聊天界面。在這裡,您可以根據PDF的內容提出問題並獲得相關答案。
cd client
pnpm i
cd server
yarn cd client
pnpm run dev
cd server
yarn start:devdocker compose up注意:我們同時使用服務器操作和Nestjs服務器。有時,Docker可能會出錯。如果遇到問題,請提出問題。
server目錄( server/.env )中創建.env文件: # Server port
PORT = 3333
DATABASE_URL = " postgresql://neondb_owner:********/neondb?sslmode=require "
# S3
AWS_ACCESS_KEY_ID = A********P**T********VN
AWS_SECRET_ACCESS_KEY = M********U9J********aYr4********Yostzb
AWS_S3_REGION = us-east-1
AWS_S3_BUCKET_NAME = ********
# Rate Limit
UPLOAD_RATE_TTL = 60
UPLOAD_RATE_LIMIT = 3
# Pinecone
PINECONE_API_KEY = e1******-56**-43**-8f**-f**7**3**2**
# OpenAI
OPENAI_API_KEY = sk-p******j-f******og******Nr0P******FJt******JiBl******EvExEK
# Clerk
CLERK_SECRET_KEY = sk_t******rL5******BkF******7******2hF******aL
# Redis
REDIS_HOST = " redis-*****tysub*****1-8*****.a.aivencloud.com "
REDIS_PORT = *****
REDIS_USERNAME = " ***** "
REDIS_PASSWORD = " AVNS_*****Mi*****S*****a "client端目錄( client/.env.local )中創建一個.env.local文件: NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY = pk_test_******reWx******M******su******b3******uZG******A
CLERK_SECRET_KEY = sk_test_SI******B******Kw******Qgdx7V******9aL
NEXT_PUBLIC_CLERK_SIGN_IN_URL = /sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL = /sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL = /
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL = /
NEXT_PUBLIC_CLERK_AFTER_SIGN_OUT_URL = /
# OpenAI
OPENAI_API_KEY = sk-p******j-f******og******Nr0P******FJt******JiBl******EvExEKNestjs最佳利用Express(Node.js),通過常規設置實現性能和可伸縮性。
server/src/app.module.ts中暫時刪除或評論以下行: providers: [
{
provide : APP_GUARD ,
useClass : ClerkAuthGuard ,
}
]一個。使用Prisma命令:
npx prisma studio
npx prisma migrate dev --name initb。 S3
Bucket policy - Edit粘貼它,但請確保 - 編輯塊公開訪問 - 禁用
2.1 S3策略( arn:aws:s3:::<bucket-name> ):
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " PublicReadGetObject " ,
"Effect" : " Allow " ,
"Principal" : " * " ,
"Action" : " s3:GetObject " ,
"Resource" : " arn:aws:s3:::<bucket-name>/* "
}
]
}2.2。 CORS配置:
交叉原始資源共享(CORS) - 編輯
[
{
"AllowedHeaders" : [ " * " ],
"AllowedMethods" : [ " PUT " , " POST " , " DELETE " , " GET " ],
"AllowedOrigins" : [ " * " ],
"ExposeHeaders" : []
}
]