|
...
|
...
|
@@ -2,8 +2,9 @@ package org.jeecg.modules.airag.app.controller; |
|
|
|
|
|
|
|
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import dev.langchain4j.data.embedding.Embedding;
|
|
|
|
import dev.langchain4j.model.output.Response;
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
...
|
...
|
@@ -12,8 +13,11 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; |
|
|
|
import org.jeecg.common.api.vo.Result;
|
|
|
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
|
|
|
import org.jeecg.common.system.query.QueryGenerator;
|
|
|
|
import org.jeecg.modules.airag.airagchatsetting.entity.AiragChatsetting;
|
|
|
|
import org.jeecg.modules.airag.app.entity.Embeddings;
|
|
|
|
import org.jeecg.modules.airag.app.service.IEmbeddingsService;
|
|
|
|
import org.jeecg.modules.airag.app.service.RedisChatSetService;
|
|
|
|
import org.jeecg.modules.airag.app.utils.AiModelUtils;
|
|
|
|
import org.jeecg.modules.airag.llm.entity.AiragKnowledge;
|
|
|
|
import org.jeecg.modules.airag.llm.service.IAiragKnowledgeService;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
...
|
...
|
@@ -42,6 +46,10 @@ public class EmbeddingsController { |
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private IAiragKnowledgeService airagKnowledgeService;
|
|
|
|
@Autowired
|
|
|
|
private AiModelUtils aiModelUtils;
|
|
|
|
@Autowired
|
|
|
|
private RedisChatSetService redisChatSetService;
|
|
|
|
|
|
|
|
/*@Autowired
|
|
|
|
private AiModelUtils aiModelUtils;
|
|
...
|
...
|
@@ -252,8 +260,8 @@ public class EmbeddingsController { |
|
|
|
embeddings.setText(fullContent);
|
|
|
|
embeddings.setId(UUID.randomUUID().toString());
|
|
|
|
embeddings.setMetadata(metadata);
|
|
|
|
// 设置向量嵌入(实际项目中应调用模型API)
|
|
|
|
embeddings.setEmbedding(generateRandomEmbedding());
|
|
|
|
// 设置向量嵌入
|
|
|
|
embeddings.setEmbedding(generateEmbedding(fullContent));
|
|
|
|
|
|
|
|
// 保存到数据库
|
|
|
|
embeddingsService.insert(embeddings);
|
|
...
|
...
|
@@ -290,14 +298,11 @@ public class EmbeddingsController { |
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 生成随机向量(1536维)
|
|
|
|
private float[] generateRandomEmbedding() {
|
|
|
|
float[] embedding = new float[768];
|
|
|
|
Random random = new Random();
|
|
|
|
for (int i = 0; i < embedding.length; i++) {
|
|
|
|
embedding[i] = random.nextFloat() * 2 - 1;
|
|
|
|
}
|
|
|
|
return embedding;
|
|
|
|
// 生成向量
|
|
|
|
private float[] generateEmbedding(String fullContent) {
|
|
|
|
AiragChatsetting chatSetting = redisChatSetService.getChatSetting();
|
|
|
|
Response<Embedding> embedding = aiModelUtils.getEmbedding(chatSetting.getEmbeddingId(), fullContent);
|
|
|
|
return embedding.content().vector();
|
|
|
|
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|