Compare commits
1 Commits
91d9813253
...
v0.1.34
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be302612f5 |
@@ -1,10 +1,12 @@
|
|||||||
package com.tasteby.service;
|
package com.tasteby.service;
|
||||||
|
|
||||||
|
import com.tasteby.util.IdGenerator;
|
||||||
import com.tasteby.util.JsonUtil;
|
import com.tasteby.util.JsonUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
||||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||||
|
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -64,6 +66,9 @@ public class VectorService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Save vector embeddings for a restaurant.
|
* Save vector embeddings for a restaurant.
|
||||||
|
*
|
||||||
|
* #331 — N개 청크를 단일 batchUpdate 호출로 처리 (이전: N+1 INSERT round-trip).
|
||||||
|
* UUID 생성은 IdGenerator.newId() 공통 유틸 사용 (인라인 변환 코드 제거).
|
||||||
*/
|
*/
|
||||||
public void saveRestaurantVectors(String restaurantId, List<String> chunks) {
|
public void saveRestaurantVectors(String restaurantId, List<String> chunks) {
|
||||||
if (chunks.isEmpty()) return;
|
if (chunks.isEmpty()) return;
|
||||||
@@ -75,19 +80,20 @@ public class VectorService {
|
|||||||
VALUES (:id, :rid, :chunk, :emb)
|
VALUES (:id, :rid, :chunk, :emb)
|
||||||
""";
|
""";
|
||||||
|
|
||||||
|
SqlParameterSource[] batch = new SqlParameterSource[chunks.size()];
|
||||||
for (int i = 0; i < chunks.size(); i++) {
|
for (int i = 0; i < chunks.size(); i++) {
|
||||||
String id = UUID.randomUUID().toString().replace("-", "").substring(0, 32).toUpperCase();
|
List<Double> emb = embeddings.get(i);
|
||||||
float[] vec = new float[embeddings.get(i).size()];
|
float[] vec = new float[emb.size()];
|
||||||
for (int j = 0; j < vec.length; j++) {
|
for (int j = 0; j < vec.length; j++) {
|
||||||
vec[j] = embeddings.get(i).get(j).floatValue();
|
vec[j] = emb.get(j).floatValue();
|
||||||
}
|
}
|
||||||
var params = new MapSqlParameterSource();
|
batch[i] = new MapSqlParameterSource()
|
||||||
params.addValue("id", id);
|
.addValue("id", IdGenerator.newId())
|
||||||
params.addValue("rid", restaurantId);
|
.addValue("rid", restaurantId)
|
||||||
params.addValue("chunk", chunks.get(i));
|
.addValue("chunk", chunks.get(i))
|
||||||
params.addValue("emb", vec);
|
.addValue("emb", vec);
|
||||||
jdbc.update(sql, params);
|
|
||||||
}
|
}
|
||||||
|
jdbc.batchUpdate(sql, batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user