Class FaqVectorService
java.lang.Object
com.bytedesk.kbase.llm_faq.vector.FaqVectorService
@Service
@ConditionalOnBean(org.springframework.ai.vectorstore.elasticsearch.ElasticsearchVectorStore.class)
public class FaqVectorService
extends Object
FAQ向量检索服务
用于处理FAQ的向量存储和相似度搜索
- Author:
- jackning
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final FaqRestService
private final org.springframework.ai.vectorstore.elasticsearch.ElasticsearchVectorStore
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate FaqVector
createSimpleFaqVectorFromDocument
(org.springframework.ai.document.Document doc) 从文档创建简化版的FaqVector对象 用于在找不到对应的FAQ实体时提供基础信息deleteFaqVector
(FaqEntity faq) 从向量存储中删除FAQ向量文档 修改为不更新实体的方式,只进行向量删除操作,避免实体并发修改冲突void
indexFaqVector
(FaqEntity faq) 将FAQ内容添加到向量存储中 添加版本检查,以更好地处理乐观锁冲突searchFaqVector
(String query, String kbUid, String categoryUid, String orgUid, int limit) 在向量存储中进行语义搜索void
updateAllVectorIndex
(FaqRequest request) 更新所有FAQ的向量索引void
updateVectorIndex
(FaqRequest request) 更新FAQ的向量索引
-
Field Details
-
vectorStore
private final org.springframework.ai.vectorstore.elasticsearch.ElasticsearchVectorStore vectorStore -
faqRestService
-
-
Constructor Details
-
FaqVectorService
public FaqVectorService()
-
-
Method Details
-
indexFaqVector
将FAQ内容添加到向量存储中 添加版本检查,以更好地处理乐观锁冲突- Parameters:
faq
- FAQ实体
-
updateVectorIndex
更新FAQ的向量索引- Parameters:
request
- FAQ请求对象
-
updateAllVectorIndex
更新所有FAQ的向量索引- Parameters:
request
- FAQ请求对象,包含知识库ID
-
deleteFaqVector
从向量存储中删除FAQ向量文档 修改为不更新实体的方式,只进行向量删除操作,避免实体并发修改冲突- Parameters:
faq
- FAQ实体- Returns:
- 删除成功返回true,否则返回false
-
searchFaqVector
public List<FaqVectorSearchResult> searchFaqVector(String query, String kbUid, String categoryUid, String orgUid, int limit) 在向量存储中进行语义搜索- Parameters:
query
- 搜索关键词kbUid
- 知识库UID(可选)categoryUid
- 分类UID(可选)orgUid
- 组织UID(可选)limit
- 返回结果数量限制- Returns:
- 相似度搜索结果列表
-
createSimpleFaqVectorFromDocument
从文档创建简化版的FaqVector对象 用于在找不到对应的FAQ实体时提供基础信息- Parameters:
doc
- 文档对象- Returns:
- 简化的FaqVector对象
-