作者 lixiang

删除无用代码

... ... @@ -11,6 +11,7 @@ import java.sql.*;
import java.util.Map;
public class JsonbMapTypeHandler extends BaseTypeHandler<Map<String, Object>> {
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
... ...
... ... @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.airag.app.entity.QuestionEmbedding;
import java.util.List;
... ... @@ -18,7 +17,7 @@ public interface QuestionEmbeddingMapper {
Integer findQuestionCount(@Param("questionEmbedding") QuestionEmbedding questionEmbedding);
QuestionEmbedding findById(@Param("id") String id);
@DS("pgvector")
int insert(@Param("record") QuestionEmbedding record);
int update(@Param("record") QuestionEmbedding record);
... ... @@ -29,6 +28,7 @@ public interface QuestionEmbeddingMapper {
List<QuestionEmbedding> similaritySearchByQuestion(@Param("vector") float[] vector,
@Param("limit") int limit,
@Param("minSimilarity") Double minSimilarity);
@Param("minSimilarity") Double minSimilarity,
@Param("knowledgeId") String knowledgeId);
}
\ No newline at end of file
... ...
... ... @@ -23,7 +23,7 @@
<if test="questionEmbedding.answer != null and questionEmbedding.answer != ''">
AND answer ILIKE CONCAT('%', #{questionEmbedding.answer}, '%')
</if>
ORDER BY (metadata->>'knowledgeId') ASC NULLS LAST, question ASC
ORDER BY (metadata->>'knowledgeId') NULLS LAST, question
</select>
<select id="findQuestionCount" resultType="int">
... ... @@ -74,11 +74,15 @@
<select id="similaritySearchByQuestion" resultMap="questionEmbeddingResultMap">
<![CDATA[
SELECT *,
(embedding <-> #{vector, jdbcType=ARRAY, typeHandler=org.jeecg.modules.airag.app.handler.PgVectorTypeHandler})::float AS similarity
(embedding <->
#{vector, jdbcType=ARRAY, typeHandler=org.jeecg.modules.airag.app.handler.PgVectorTypeHandler})::float AS similarity
FROM question_embedding
WHERE (embedding <-> #{vector, jdbcType=ARRAY, typeHandler=org.jeecg.modules.airag.app.handler.PgVectorTypeHandler}) < #{minSimilarity}
ORDER BY similarity ASC
LIMIT #{limit}
WHERE (embedding <->
#{vector, jdbcType=ARRAY, typeHandler=org.jeecg.modules.airag.app.handler.PgVectorTypeHandler}) <
#{minSimilarity}
AND metadata ->> 'knowledgeId' = #{knowledgeId}
ORDER BY similarity
LIMIT #{limit}
]]>
</select>
... ...
... ... @@ -118,7 +118,7 @@ public class QuestionEmbeddingServiceImpl implements IQuestionEmbeddingService {
Response<Embedding> embedding = aiModelUtils.getEmbedding(chatSetting.getEmbeddingId(), question);
return questionEmbeddingMapper.similaritySearchByQuestion(embedding.content().vector(), limit, 1 - minSimilarity);
return questionEmbeddingMapper.similaritySearchByQuestion(embedding.content().vector(), limit, 1 - minSimilarity,chatSetting.getKnowledgeId());
}
... ...
... ... @@ -20,18 +20,18 @@ public class ZdyRagController {
/**
* 1、将提问文本与问题库匹配,若匹配则回答预设回答结果
* 2、若问题库中无匹配预设问题,则查询知识库,将查询到的知识提供给llm模型,生成回答结果
* 3、回答时会将当初上传的资料以参考资料的形式进行返回,可进行预览
* 4、将本次的问答结果记录日志
* todo :增加产品推荐功能?
*
* @author lixiang
* @param questionText 问题文本
* @param code 快捷按钮code
* @param codeType 提问方式,用于记录日志,区分输入框提问还是快捷方式
* @param user 提问人
* @return 以流式返回回答结果
*
* 1、将提问文本与问题库匹配,若匹配则回答预设回答结果
* 2、若问题库中无匹配预设问题,则查询知识库,将查询到的知识提供给llm模型,生成回答结果
* 3、回答时会将当初上传的资料以参考资料的形式进行返回,可进行预览
* 4、将本次的问答结果记录日志
* todo :增加产品推荐功能?
*/
@Operation(summary = "sendStream")
... ... @@ -40,6 +40,8 @@ public class ZdyRagController {
@RequestParam("code") String code,
@RequestParam("codeType") Integer codeType,
@RequestParam("user") String user) {
return airagResponseService.handleStreamRequest(questionText, code, codeType, user);
}
}
\ No newline at end of file
... ...