import type { NextApiRequest, NextApiResponse } from 'next'; import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter'; import { Chroma } from "langchain/vectorstores/chroma"; import XenovaTransformersEmbeddings from '../../embed/hf' async function handleDocs(text: string) { const textSplitter = new RecursiveCharacterTextSplitter({ chunkSize: 1000 }); const docs = await textSplitter.createDocuments([text]); const vectorStore = await Chroma.fromDocuments(docs, new XenovaTransformersEmbeddings(), { collectionName: 'docs' }); return vectorStore; } export default async function handler( req: NextApiRequest, res: NextApiResponse, ) { const { text } = JSON.parse(req.body); // console.log(text); if (!text) { return res.status(400).json({ message: 'No question in the request' }); } const vectorStore = await handleDocs(text); res.status(200).send({ model: vectorStore, }); } export const config = { api: { bodyParser: true, // Disallow body parsing, consume as stream }, };