JBoltAI 向量检索:在知识海洋里 “捞针” 的秘密武器

68 阅读4分钟

一、前言

在人工智能的世界里,向量检索就像是在知识的海洋里 “捞针”,而JBoltAI_SpringBoot就是那个超级厉害的 “捞针神器”。今天,就让我来给大家讲讲这个神器是怎么工作的,保证让你看得津津有味,还能学到不少东西。

二、向量检索的 “前世今生”

向量检索,说白了就是把文本、图片、音频这些乱七八糟的数据,通过一些神奇的算法,变成一个个向量。这些向量就像是数据的 “身份证”,有了这个 “身份证”,我们就可以在海量的数据里快速找到我们想要的东西。就好比你在图书馆里找一本书,以前可能要一本一本翻,现在有了向量检索,就像有了图书的定位系统,直接就能找到书在哪个书架上。

三、JBoltAI_SpringBoot 的向量检索 “秘籍”

JBoltAI_SpringBoot的向量检索功能,那可是相当的厉害。它就像是一个超级侦探,能在知识的海洋里迅速找到你想要的线索。下面,就让我们来看看这个 “侦探” 是怎么工作的。

1.搜索文档
public Result<List<AiDoc>> getDocListByVdbId(Long vdbId, String content, Integer limit, Double minScore) {
 
    try {
 
        VDBOptResult<List<VDBDoc>> VDBDocList = JBoltVDB.use(vdbId.toString()).
 
                search("KDB_" + vdbId, new VDBConditions().matchText(content).limit(limit));
 
        if (VDBDocList.isSuccess()) {
 
            List<VDBDoc> docsList = VDBDocList.getResult();
 
            if (docsList.size() == 0) {
 
                return Result.success(new ArrayList<>());
 
            }
 
            // 把 docsList 的中的 id 变成一个 list
 
            List<String> idList = docsList.stream()
 
                    .filter(doc -> {
 
                        if (minScore == null ) {
 
                            return true;
 
                        }
 
                        return  ObjectUtil.defaultIfNull(doc.getScore(),0.0) >= minScore;
 
                    })
 
                    .map(VDBDoc::getId) 
 
                    .collect(Collectors.toList());
 
            List<AiDoc> aiDocsList = aiDocService.getDocListByIds(idList);
 
            return Result.success(aiDocsList);
 
        } else {
 
            return Result.error(VDBDocList.getMsg());
 
        }
 
    } catch (Exception e) {
 
        e.printStackTrace();
 
        logger.error("知识库检索异常:" + e.getMessage());
 
    }
 
    return Result.error("知识库检索异常");
 
}

这段代码就像是侦探接到了一个任务,要在一个叫 “KDB” 的地方,找到和 “content” 相关的线索。vdbId 就像是任务的编号,content 是我们要找的线索的关键信息,limit 是我们要找的线索的数量,minScore 是线索的最低分数,分数越高,线索就越重要。

image.png

image.png

2. 筛选文档

如果搜索成功,我们就会得到一个文档列表。如果这个列表是空的,那就说明没有找到任何线索,我们就直接返回一个空的列表。如果列表不为空,我们就会对这些文档进行筛选。我们只保留那些分数大于等于 minScore 的文档,其他的就不要了。这就像是侦探在一堆线索里,只挑那些最重要的线索。

3. 获取文档

最后,我们根据筛选出来的文档 ID,去获取这些文档的详细信息。如果获取成功,我们就返回这些文档。如果获取失败,我们就返回一个错误信息。这就像是侦探在找到了重要的线索后,去获取更多的信息,如果获取成功,任务就完成了,如果获取失败,那就只能遗憾地告诉委托人,任务失败了。

四、向量检索的 “奇妙之旅”

有了JBoltAI_SpringBoot的向量检索功能,我们就可以在知识的海洋里尽情地 “捞针” 了。无论是文本、图片还是音频,只要我们有了它们的向量,就能快速地找到它们。这就像是我们有了一个超级强大的搜索引擎,可以在瞬间找到我们想要的任何信息。

而且,这个功能还特别的灵活。我们可以根据自己的需求,设置不同的搜索条件,比如我们要找的线索的关键信息、我们要找的线索的数量、线索的最低分数等等。这就像是我们在用搜索引擎的时候,可以根据自己的需求,设置不同的搜索条件,找到最符合我们需求的信息。

五、向量检索的 “无限可能” JBoltAI_SpringBoot的向量检索功能,不仅仅是一个简单的搜索工具,更是一个充满 “无限可能” 的平台。我们可以用它来做很多有趣的事情,比如:

JBoltAI智能话术助手 :我们可以用它来快速找到客户的问题的答案,让客户得到更快更好的服务。

JBoltAI智能知识图谱助手 :我们可以用它来构建知识图谱,把各种知识连接起来,让用户可以更直观地看到知识之间的关系。