|
@@ -2,8 +2,9 @@ package org.jeecg.modules.airag.app.controller; |
|
@@ -2,8 +2,9 @@ package org.jeecg.modules.airag.app.controller; |
|
2
|
|
2
|
|
|
3
|
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
3
|
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
|
4
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
4
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
5
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
6
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
5
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
6
|
+import dev.langchain4j.data.embedding.Embedding;
|
|
|
|
7
|
+import dev.langchain4j.model.output.Response;
|
|
7
|
import io.swagger.v3.oas.annotations.Operation;
|
8
|
import io.swagger.v3.oas.annotations.Operation;
|
|
8
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
9
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
9
|
import lombok.extern.slf4j.Slf4j;
|
10
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -12,8 +13,11 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; |
|
@@ -12,8 +13,11 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; |
|
12
|
import org.jeecg.common.api.vo.Result;
|
13
|
import org.jeecg.common.api.vo.Result;
|
|
13
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
14
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
|
14
|
import org.jeecg.common.system.query.QueryGenerator;
|
15
|
import org.jeecg.common.system.query.QueryGenerator;
|
|
|
|
16
|
+import org.jeecg.modules.airag.airagchatsetting.entity.AiragChatsetting;
|
|
15
|
import org.jeecg.modules.airag.app.entity.Embeddings;
|
17
|
import org.jeecg.modules.airag.app.entity.Embeddings;
|
|
16
|
import org.jeecg.modules.airag.app.service.IEmbeddingsService;
|
18
|
import org.jeecg.modules.airag.app.service.IEmbeddingsService;
|
|
|
|
19
|
+import org.jeecg.modules.airag.app.service.RedisChatSetService;
|
|
|
|
20
|
+import org.jeecg.modules.airag.app.utils.AiModelUtils;
|
|
17
|
import org.jeecg.modules.airag.llm.entity.AiragKnowledge;
|
21
|
import org.jeecg.modules.airag.llm.entity.AiragKnowledge;
|
|
18
|
import org.jeecg.modules.airag.llm.service.IAiragKnowledgeService;
|
22
|
import org.jeecg.modules.airag.llm.service.IAiragKnowledgeService;
|
|
19
|
import org.springframework.beans.factory.annotation.Autowired;
|
23
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -42,6 +46,10 @@ public class EmbeddingsController { |
|
@@ -42,6 +46,10 @@ public class EmbeddingsController { |
|
42
|
|
46
|
|
|
43
|
@Autowired
|
47
|
@Autowired
|
|
44
|
private IAiragKnowledgeService airagKnowledgeService;
|
48
|
private IAiragKnowledgeService airagKnowledgeService;
|
|
|
|
49
|
+ @Autowired
|
|
|
|
50
|
+ private AiModelUtils aiModelUtils;
|
|
|
|
51
|
+ @Autowired
|
|
|
|
52
|
+ private RedisChatSetService redisChatSetService;
|
|
45
|
|
53
|
|
|
46
|
/*@Autowired
|
54
|
/*@Autowired
|
|
47
|
private AiModelUtils aiModelUtils;
|
55
|
private AiModelUtils aiModelUtils;
|
|
@@ -252,8 +260,8 @@ public class EmbeddingsController { |
|
@@ -252,8 +260,8 @@ public class EmbeddingsController { |
|
252
|
embeddings.setText(fullContent);
|
260
|
embeddings.setText(fullContent);
|
|
253
|
embeddings.setId(UUID.randomUUID().toString());
|
261
|
embeddings.setId(UUID.randomUUID().toString());
|
|
254
|
embeddings.setMetadata(metadata);
|
262
|
embeddings.setMetadata(metadata);
|
|
255
|
- // 设置向量嵌入(实际项目中应调用模型API)
|
|
|
|
256
|
- embeddings.setEmbedding(generateRandomEmbedding());
|
263
|
+ // 设置向量嵌入
|
|
|
|
264
|
+ embeddings.setEmbedding(generateEmbedding(fullContent));
|
|
257
|
|
265
|
|
|
258
|
// 保存到数据库
|
266
|
// 保存到数据库
|
|
259
|
embeddingsService.insert(embeddings);
|
267
|
embeddingsService.insert(embeddings);
|
|
@@ -290,14 +298,11 @@ public class EmbeddingsController { |
|
@@ -290,14 +298,11 @@ public class EmbeddingsController { |
|
290
|
}
|
298
|
}
|
|
291
|
|
299
|
|
|
292
|
|
300
|
|
|
293
|
- // 生成随机向量(1536维)
|
|
|
|
294
|
- private float[] generateRandomEmbedding() {
|
|
|
|
295
|
- float[] embedding = new float[768];
|
|
|
|
296
|
- Random random = new Random();
|
|
|
|
297
|
- for (int i = 0; i < embedding.length; i++) {
|
|
|
|
298
|
- embedding[i] = random.nextFloat() * 2 - 1;
|
|
|
|
299
|
- }
|
|
|
|
300
|
- return embedding;
|
301
|
+ // 生成向量
|
|
|
|
302
|
+ private float[] generateEmbedding(String fullContent) {
|
|
|
|
303
|
+ AiragChatsetting chatSetting = redisChatSetService.getChatSetting();
|
|
|
|
304
|
+ Response<Embedding> embedding = aiModelUtils.getEmbedding(chatSetting.getEmbeddingId(), fullContent);
|
|
|
|
305
|
+ return embedding.content().vector();
|
|
301
|
|
306
|
|
|
302
|
}
|
307
|
}
|
|
303
|
} |
308
|
} |