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