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,
};