From 49e79d72b99ff99292b0f342698fb729af77b68c Mon Sep 17 00:00:00 2001 From: Lishiling Date: Tue, 31 Mar 2026 23:17:07 +0800 Subject: [PATCH 01/10] =?UTF-8?q?fix:=E5=88=A0=E9=99=A4=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E5=A4=84=E7=90=86,=E6=94=B9=E4=B8=BA=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index 1e9127d72a..eca38c4283 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -159,7 +159,8 @@ async def get_rp(self) -> RerankProvider | None: async def _ensure_vec_db(self) -> FaissVecDB: if not self.kb.embedding_provider_id: - raise ValueError(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") + logger.error(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") + # raise ValueError(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") ep = await self.get_ep() rp = await self.get_rp() From a2e173916f71192786a4bba19d24163c7c09df4c Mon Sep 17 00:00:00 2001 From: Lishiling Date: Tue, 31 Mar 2026 23:49:16 +0800 Subject: [PATCH 02/10] =?UTF-8?q?fix:=E5=88=A0=E9=99=A4=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E5=A4=84=E7=90=86,=E6=94=B9=E4=B8=BA=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index eca38c4283..566c3fc311 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -140,9 +140,8 @@ async def get_ep(self) -> EmbeddingProvider: self.kb.embedding_provider_id, ) # type: ignore if not ep: - raise ValueError( - f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider", - ) + logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider") + # raise ValueError(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider") return ep async def get_rp(self) -> RerankProvider | None: From c34789ca33a79534a88ba3964a4551aedacc0f64 Mon Sep 17 00:00:00 2001 From: Lishiling Date: Tue, 31 Mar 2026 23:56:53 +0800 Subject: [PATCH 03/10] =?UTF-8?q?fix:=E6=B7=BB=E5=8A=A0=E7=AB=99=E4=BD=8D?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index 566c3fc311..e1f955a551 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -140,7 +140,22 @@ async def get_ep(self) -> EmbeddingProvider: self.kb.embedding_provider_id, ) # type: ignore if not ep: - logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider") + logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用站位编码器") + + class TempEmbeddingProvider(EmbeddingProvider): + def __init__(self, provider_config: dict, provider_settings: dict) -> None: + super().__init__(provider_config, provider_settings) + + async def get_embedding(self, text: str) -> list[float]: + return [] + + async def get_embeddings(self, texts: list[str]) -> list[list[float]]: + return [] + + def get_dim(self) -> int: + return 1024 + + ep: EmbeddingProvider = TempEmbeddingProvider({},{}) # raise ValueError(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider") return ep From cd2b8734338f367e5f26f3dced0a70533a6ba5ca Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:07:34 +0800 Subject: [PATCH 04/10] =?UTF-8?q?fix:=E6=B7=BB=E5=8A=A0=E7=AB=99=E4=BD=8D?= =?UTF-8?q?=E9=87=8D=E6=8E=92=E5=BA=8F=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index e1f955a551..699f170193 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -140,8 +140,7 @@ async def get_ep(self) -> EmbeddingProvider: self.kb.embedding_provider_id, ) # type: ignore if not ep: - logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用站位编码器") - + logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用站位Embedding Provider") class TempEmbeddingProvider(EmbeddingProvider): def __init__(self, provider_config: dict, provider_settings: dict) -> None: super().__init__(provider_config, provider_settings) @@ -154,9 +153,7 @@ async def get_embeddings(self, texts: list[str]) -> list[list[float]]: def get_dim(self) -> int: return 1024 - ep: EmbeddingProvider = TempEmbeddingProvider({},{}) - # raise ValueError(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider") return ep async def get_rp(self) -> RerankProvider | None: @@ -166,9 +163,14 @@ async def get_rp(self) -> RerankProvider | None: self.kb.rerank_provider_id, ) # type: ignore if not rp: - raise ValueError( - f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider", - ) + logger.error(f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider,使用站位Rerank Provider") + class TempRerankProvider(RerankProvider): + def __init__(self, provider_config: dict, provider_settings: dict) -> None: + super().__init__(provider_config, provider_settings) + + async def rerank(self,query: str,documents: list[str],top_n: int | None = None,): + return [] + rp: RerankProvider = TempRerankProvider({},{}) return rp async def _ensure_vec_db(self) -> FaissVecDB: From 047037b91caff44f326cf69f2eaf610e3ebb0398 Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:12:30 +0800 Subject: [PATCH 05/10] =?UTF-8?q?fix:=E5=B0=86=E7=AB=99=E4=BD=8D=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E6=96=B9=E6=B3=95=E8=B0=83=E7=94=A8=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index 699f170193..481461a345 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -142,18 +142,19 @@ async def get_ep(self) -> EmbeddingProvider: if not ep: logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用站位Embedding Provider") class TempEmbeddingProvider(EmbeddingProvider): - def __init__(self, provider_config: dict, provider_settings: dict) -> None: + def __init__(self, provider_config: dict, provider_settings: dict, embedding_provider_id:str) -> None: super().__init__(provider_config, provider_settings) + self.embedding_provider_id = embedding_provider_id async def get_embedding(self, text: str) -> list[float]: - return [] + raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") async def get_embeddings(self, texts: list[str]) -> list[list[float]]: - return [] + raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") def get_dim(self) -> int: - return 1024 - ep: EmbeddingProvider = TempEmbeddingProvider({},{}) + raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") + ep: EmbeddingProvider = TempEmbeddingProvider({},{},self.kb.embedding_provider_id) return ep async def get_rp(self) -> RerankProvider | None: @@ -165,12 +166,13 @@ async def get_rp(self) -> RerankProvider | None: if not rp: logger.error(f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider,使用站位Rerank Provider") class TempRerankProvider(RerankProvider): - def __init__(self, provider_config: dict, provider_settings: dict) -> None: + def __init__(self, provider_config: dict, provider_settings: dict,rerank_provider_id:str) -> None: super().__init__(provider_config, provider_settings) + self.rerank_provider_id = rerank_provider_id async def rerank(self,query: str,documents: list[str],top_n: int | None = None,): - return [] - rp: RerankProvider = TempRerankProvider({},{}) + raise ValueError(f"无法找到 ID 为 {self.rerank_provider_id} 的 Embedding Provider") + rp: RerankProvider = TempRerankProvider({},{}, self.kb.rerank_provider_id) return rp async def _ensure_vec_db(self) -> FaissVecDB: From a97db8ae5623976199f7ea269c017018ebc599ec Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:15:14 +0800 Subject: [PATCH 06/10] =?UTF-8?q?fix:Embedding=20Provider=E7=AB=99?= =?UTF-8?q?=E4=BD=8D=E6=A8=A1=E5=9E=8B=E7=9A=84git=5Fdim=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=9B=BA=E5=AE=9A=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index 481461a345..32816b3d02 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -153,7 +153,7 @@ async def get_embeddings(self, texts: list[str]) -> list[list[float]]: raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") def get_dim(self) -> int: - raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") + return 512 ep: EmbeddingProvider = TempEmbeddingProvider({},{},self.kb.embedding_provider_id) return ep From d9bc58baff87abc26582035043ad401dee04acaf Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:27:41 +0800 Subject: [PATCH 07/10] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E9=94=99=E5=88=AB=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index 32816b3d02..f765df7a98 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -135,12 +135,12 @@ async def initialize(self) -> None: async def get_ep(self) -> EmbeddingProvider: if not self.kb.embedding_provider_id: - raise ValueError(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") + logger.error(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") ep: EmbeddingProvider = await self.prov_mgr.get_provider_by_id( self.kb.embedding_provider_id, ) # type: ignore if not ep: - logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用站位Embedding Provider") + logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用占位Embedding Provider") class TempEmbeddingProvider(EmbeddingProvider): def __init__(self, provider_config: dict, provider_settings: dict, embedding_provider_id:str) -> None: super().__init__(provider_config, provider_settings) @@ -164,7 +164,7 @@ async def get_rp(self) -> RerankProvider | None: self.kb.rerank_provider_id, ) # type: ignore if not rp: - logger.error(f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider,使用站位Rerank Provider") + logger.error(f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider,使用占位Rerank Provider") class TempRerankProvider(RerankProvider): def __init__(self, provider_config: dict, provider_settings: dict,rerank_provider_id:str) -> None: super().__init__(provider_config, provider_settings) From 76259ed2beb73e497af6cadb6e76b66605b3302c Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:28:57 +0800 Subject: [PATCH 08/10] =?UTF-8?q?fix:=E6=89=A7=E8=A1=8Cruff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 51 +++++++++++++++++++----- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index f765df7a98..9a1cedba8f 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -140,21 +140,36 @@ async def get_ep(self) -> EmbeddingProvider: self.kb.embedding_provider_id, ) # type: ignore if not ep: - logger.error(f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用占位Embedding Provider") + logger.error( + f"无法找到 ID 为 {self.kb.embedding_provider_id} 的 Embedding Provider,使用占位Embedding Provider" + ) + class TempEmbeddingProvider(EmbeddingProvider): - def __init__(self, provider_config: dict, provider_settings: dict, embedding_provider_id:str) -> None: + def __init__( + self, + provider_config: dict, + provider_settings: dict, + embedding_provider_id: str, + ) -> None: super().__init__(provider_config, provider_settings) self.embedding_provider_id = embedding_provider_id async def get_embedding(self, text: str) -> list[float]: - raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") + raise ValueError( + f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider" + ) async def get_embeddings(self, texts: list[str]) -> list[list[float]]: - raise ValueError(f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider") + raise ValueError( + f"无法找到 ID 为 {self.embedding_provider_id} 的 Embedding Provider" + ) def get_dim(self) -> int: return 512 - ep: EmbeddingProvider = TempEmbeddingProvider({},{},self.kb.embedding_provider_id) + + ep: EmbeddingProvider = TempEmbeddingProvider( + {}, {}, self.kb.embedding_provider_id + ) return ep async def get_rp(self) -> RerankProvider | None: @@ -164,15 +179,31 @@ async def get_rp(self) -> RerankProvider | None: self.kb.rerank_provider_id, ) # type: ignore if not rp: - logger.error(f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider,使用占位Rerank Provider") + logger.error( + f"无法找到 ID 为 {self.kb.rerank_provider_id} 的 Rerank Provider,使用占位Rerank Provider" + ) + class TempRerankProvider(RerankProvider): - def __init__(self, provider_config: dict, provider_settings: dict,rerank_provider_id:str) -> None: + def __init__( + self, + provider_config: dict, + provider_settings: dict, + rerank_provider_id: str, + ) -> None: super().__init__(provider_config, provider_settings) self.rerank_provider_id = rerank_provider_id - async def rerank(self,query: str,documents: list[str],top_n: int | None = None,): - raise ValueError(f"无法找到 ID 为 {self.rerank_provider_id} 的 Embedding Provider") - rp: RerankProvider = TempRerankProvider({},{}, self.kb.rerank_provider_id) + async def rerank( + self, + query: str, + documents: list[str], + top_n: int | None = None, + ): + raise ValueError( + f"无法找到 ID 为 {self.rerank_provider_id} 的 Embedding Provider" + ) + + rp: RerankProvider = TempRerankProvider({}, {}, self.kb.rerank_provider_id) return rp async def _ensure_vec_db(self) -> FaissVecDB: From a006cda9ee83d482444d6e3367536bd90e1722e6 Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:36:48 +0800 Subject: [PATCH 09/10] =?UTF-8?q?fix:=E5=9C=A8self.kb.embedding=5Fprovider?= =?UTF-8?q?=5Fid=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=97=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E7=9A=84=E5=8D=A0=E4=BD=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index 9a1cedba8f..c2623d0c48 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -135,6 +135,7 @@ async def initialize(self) -> None: async def get_ep(self) -> EmbeddingProvider: if not self.kb.embedding_provider_id: + self.kb.embedding_provider_id = "Embedding_Provider" logger.error(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") ep: EmbeddingProvider = await self.prov_mgr.get_provider_by_id( self.kb.embedding_provider_id, @@ -208,6 +209,7 @@ async def rerank( async def _ensure_vec_db(self) -> FaissVecDB: if not self.kb.embedding_provider_id: + self.kb.embedding_provider_id = "Embedding_Provider" logger.error(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") # raise ValueError(f"知识库 {self.kb.kb_name} 未配置 Embedding Provider") From b0a6a9aced1909bcd3318ec6924bd8574bb3da91 Mon Sep 17 00:00:00 2001 From: Lishiling Date: Wed, 1 Apr 2026 00:39:39 +0800 Subject: [PATCH 10/10] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=8D=95=E8=AF=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/knowledge_base/kb_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astrbot/core/knowledge_base/kb_helper.py b/astrbot/core/knowledge_base/kb_helper.py index c2623d0c48..93e0cf9bed 100644 --- a/astrbot/core/knowledge_base/kb_helper.py +++ b/astrbot/core/knowledge_base/kb_helper.py @@ -201,7 +201,7 @@ async def rerank( top_n: int | None = None, ): raise ValueError( - f"无法找到 ID 为 {self.rerank_provider_id} 的 Embedding Provider" + f"无法找到 ID 为 {self.rerank_provider_id} 的 Rerank Provider" ) rp: RerankProvider = TempRerankProvider({}, {}, self.kb.rerank_provider_id)