基于你给的技术栈初始化完成:
- Next.js (App Router, TypeScript)
- Vercel AI SDK
- Crawlee + Playwright
- Prisma + PostgreSQL
- Vector Store 可选 Pinecone / Supabase Vector
pnpm install
cp .env.example .env填充 .env 里的关键字段:
DATABASE_URLOPENAI_API_KEYVECTOR_STORE(pinecone或supabase)- Pinecone 或 Supabase 对应凭证
pnpm db:generate
pnpm db:migratepnpm dev打开 http://localhost:3000。
页面里有两个区域:
- Ingest Website:输入 URL 后调用
/api/ingest进行抓取、分块、入库、向量化。 - Chat:调用
/api/chat,模型可通过 tool 调用searchKnowledge从向量库召回内容。
src/app/api/chat/route.ts:AI 聊天与 tool callingsrc/app/api/ingest/route.ts:网页抓取与入库入口src/lib/crawl.ts:Crawlee + Playwright 抓取实现src/lib/ingest.ts:抓取、切块、Prisma 入库、向量 upsertsrc/lib/vector/:Pinecone / Supabase 向量存储适配层prisma/schema.prisma:SourceDocument+DocumentChunk模型(含 pgvector 字段)
pnpm crawl:sample https://example.com
pnpm lint
pnpm build默认代码调用 RPC:match_document_chunks。你需要在 Supabase 侧创建对应表和匹配函数,并确保函数参数包含:
query_embeddingmatch_count
如果你已有不同命名,可通过 .env 修改:
SUPABASE_VECTOR_TABLESUPABASE_MATCH_RPC