wangyunpeng 3 часов назад
Родитель
Сommit
fdf06b6dd6

+ 1 - 1
core/src/main/java/com/tzld/videoVector/service/impl/VideoSearchServiceImpl.java

@@ -791,7 +791,7 @@ public class VideoSearchServiceImpl implements VideoSearchService {
 
         for (VideoMatchResult matchResult : results) {
             try {
-                String redisKey = VIDEO_DETAIL_KEY_PREFIX + matchResult.getVideoId();
+                String redisKey = VectorConstants.VIDEO_DETAIL_KEY_PREFIX + matchResult.getVideoId();
                 String detailJson = redisUtils.get(redisKey);
                 if (detailJson != null) {
                     Map<String, Object> detail = JSONObject.parseObject(detailJson, Map.class);

+ 6 - 2
core/src/main/resources/mapper/pgVector/ext/VideoVectorMapperExt.xml

@@ -87,9 +87,13 @@
   </delete>
 
   <select id="searchTopNByCosine" resultMap="SearchResultMap">
+    WITH filtered AS MATERIALIZED (
+      SELECT video_id, point_index, embedding
+      FROM video_vectors
+      WHERE config_code = #{configCode}
+    )
     SELECT video_id, point_index, 1 - (embedding &lt;=&gt; #{queryVector}::vector) AS score
-    FROM video_vectors
-    WHERE config_code = #{configCode}
+    FROM filtered
     ORDER BY embedding &lt;=&gt; #{queryVector}::vector
     LIMIT #{topN}
   </select>