feat: include breadcrumb in embedding text

This commit is contained in:
aruo
2026-07-05 12:15:27 +08:00
parent 1bfe1a17b4
commit c7e2fc2ee2
3 changed files with 64 additions and 3 deletions
@@ -148,7 +148,7 @@ public class VectorIndexService {
try {
// 生成向量
List<Float> vector = embeddingService.generateEmbedding(chunk.getContent());
List<Float> vector = embeddingService.generateEmbedding(buildEmbeddingText(chunk));
// 构建元数据(包含文件信息)
Map<String, Object> metadata = buildMetadata(path.toString(), chunk, chunks.size());
@@ -191,7 +191,7 @@ public class VectorIndexService {
try {
// 生成向量
List<Float> vector = embeddingService.generateEmbedding(chunk.getContent());
List<Float> vector = embeddingService.generateEmbedding(buildEmbeddingText(chunk));
// 构建元数据(使用 docId 和 category)
Map<String, Object> metadata = buildDocumentMetadata(docId, chunk, chunks.size(), category);
@@ -280,6 +280,30 @@ public class VectorIndexService {
return metadata;
}
static String buildEmbeddingText(DocumentChunk chunk) {
String content = trimToEmpty(chunk.getContent());
String title = trimToEmpty(chunk.getTitle());
String breadcrumb = trimToEmpty(chunk.getBreadcrumb());
if (title.isEmpty() && breadcrumb.isEmpty()) {
return content;
}
StringBuilder text = new StringBuilder();
if (!title.isEmpty()) {
text.append("Title: ").append(title).append("\n");
}
if (!breadcrumb.isEmpty()) {
text.append("Path: ").append(breadcrumb).append("\n");
}
text.append("Content:\n").append(content);
return text.toString();
}
private static String trimToEmpty(String value) {
return value == null ? "" : value.trim();
}
/**
* 删除文件的旧数据(根据 metadata._source)
*/