const { embed, embedMany } = require('ai'); const { model, embeddingModel } = require('./openai.service'); const { findSimilarContent } = require('./db.service'); // 数据库查询模块需单独实现 // 文本分块处理 function generateChunks(input) { return input .trim() .split('-------split line-------') .filter((chunk) => chunk !== ''); } // 批量生成embedding async function generateEmbeddings(value) { const chunks = generateChunks(value); const { embeddings } = await embedMany({ model: embeddingModel, values: chunks, }); return embeddings.map((embedding, i) => ({ content: chunks[i], embedding, })); } // 单个embedding生成 async function generateEmbedding(value) { const input = value.replaceAll('\\n', ' '); const { embedding } = await embed({ model: embeddingModel, value: input, dimensions: 1536, }); return embedding; } // 核心查询函数 async function findRelevantContent(userQuery) { const userQueryEmbedded = await generateEmbedding(userQuery); return findSimilarContent(userQueryEmbedded); // 需要数据库服务支持 } module.exports = { generateEmbeddings, generateEmbedding, findRelevantContent, };