基于知识库的问答系统中-问题和知识库的相关性匹配是如何做的?

例如:我的知识库中是内容主要是关于一款智能手机A的介绍的。正常来说,如果我提问:“性能怎么样?”,它会使用知识库中的内容进行回答。但是如果我问了一个不想关的问题比如说,“请介绍一下名胜古迹”,它的回答就会给出一些名胜古迹的信息。那么,对于问题来说,如何判断问题是否属于知识库的一部分呢,如果属于的话就继续,否则就终止。现有技术有什么能够直接做到吗?

在基于知识库的问答系统中,问题和知识库的相关性匹配通常通过以下步骤来实现:

  1. 问题解析:将用户提出的问题进行解析,提取出问题的关键词和语义信息。

  2. 知识库预处理:对知识库中的文本进行预处理,包括分词、去停用词、词性标注等,将文本转化为可计算的表示形式。

  3. 特征提取:根据问题和知识库中的文本,提取相应的特征。常用的特征包括词袋模型、TF-IDF、Word2Vec等。

  4. 相似度计算:使用相似度计算方法,比如余弦相似度、编辑距离、Jaccard相似度等,计算问题与知识库中每个文本的相似度得分。

  5. 相关性排序:根据相似度得分,对知识库中的文本进行排序,将最相关的文本排在前面。

  6. 答案抽取:根据排名靠前的知识库文本,从中抽取出与问题相关的答案。

需要注意的是,以上步骤中的具体实现方法可能因系统而异,也可以使用更复杂的模型和算法来进行问题和知识库的相关性匹配。

你说的这个在langchain里面已经限制过了啊

你的问题会被解析成向量 然后和你的向量数据库中的导入的数据进行比较 如果没有匹配到 会直接告诉提问的人无法回答

如果你的问题比较具体肯定匹配的精度就高 但是即便你问一个抽象的问题 langchain里面也是限定了chatgpt必须使用你提供的数据来进行回答 而不会直接自己进行自由创作

你实际测试一下就知道,
(1)关于匹配的问题,embedding的时候会给出一个相似度,这个相似度很难说什么样就是匹配到什么样就算没有匹配到的;
(2)关于限制chatgpt只让它使用你提供的数据来回答,这个限制做的并不是完美的,还是会有遗漏的情况的,有的时候他并不完全会使用你的数据进行回答。

对 我知道这个东西肯定是直接拿来 什么都不优化的话 效果不会很好
官网上面有个例子Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
你可以看一下 通过源数据过滤的方式去解决 相关性问题的

您好 我想请教一下 [在不指定知识库的情况下,如何通过模型判断出问题是属于哪个知识库的] 有没有合适的解决方案啊