
ลงชื่อเข้าใช้ : เริ่มต้นด้วยการลงชื่อเข้าใช้จากหน้า Landing Page เมื่อลงชื่อเข้าใช้แล้วคุณจะเห็นปุ่ม 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 บางครั้งนักเทียบท่าอาจส่งข้อผิดพลาด หากคุณพบปัญหาโปรดเพิ่มปัญหา
.env ในไดเรกทอรี server ( server/.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 ".env.local ในไดเรกทอรี client ( client/.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 initข. 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" : []
}
]