From 2eaffc7c3a2e186e14ffe95947d626944b068b0c Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Thu, 3 Oct 2024 10:22:31 -0500 Subject: [PATCH] not retrieve knowledge from default collection. --- .../Functions/KnowledgeRetrievalFn.cs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs index ffbef770..39584b84 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs @@ -1,5 +1,3 @@ -using BotSharp.Abstraction.VectorStorage.Extensions; - namespace BotSharp.Plugin.KnowledgeBase.Functions; public class KnowledgeRetrievalFn : IFunctionCallback @@ -21,23 +19,23 @@ public class KnowledgeRetrievalFn : IFunctionCallback { var args = JsonSerializer.Deserialize(message.FunctionArgs ?? "{}"); - var collectionName = _settings.Default.CollectionName ?? KnowledgeCollectionName.BotSharp; - var knowledgeService = _services.GetRequiredService(); - var knowledges = await knowledgeService.SearchVectorKnowledge(args.Question, collectionName, new VectorSearchOptions + // Get knowledge from vectordb + var hooks = _services.GetServices(); + var knowledges = new List(); + foreach (var hook in hooks) { - Fields = new List { KnowledgePayloadName.Text, KnowledgePayloadName.Answer }, - Confidence = 0.2f - }); + var k = await hook.GetRelevantKnowledges(message, args.Question); + knowledges.AddRange(k); + } + knowledges = knowledges.Distinct().ToList(); if (!knowledges.IsNullOrEmpty()) { - var answers = knowledges.Select(x => x.ToQuestionAnswer()).ToList(); - message.Content = string.Join("\r\n\r\n=====\r\n", answers); + message.Content = string.Join("\r\n\r\n=====\r\n", knowledges); } else { - message.Content = $"I didn't find any useful knowledge related to [{args.Question}]. \r\nCan you tell me the instruction and I'll memorize it."; - message.StopCompletion = true; + message.Content = $"I didn't find any useful knowledge related to [{args.Question}]."; } return true;