mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 03:55:55 +00:00
feat: Pass session context (session_name) to knowledge engine retrieval filters.
Allow KnowledgeEngine plugins to filter retrieval results by session,enabling per-session memory isolation in plugin-based knowledge bases
This commit is contained in:
@@ -74,7 +74,13 @@ class LocalAgentRunner(runner.RequestRunner):
|
|||||||
self.ap.logger.warning(f'Knowledge base {kb_uuid} not found, skipping')
|
self.ap.logger.warning(f'Knowledge base {kb_uuid} not found, skipping')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
result = await kb.retrieve(user_message_text)
|
result = await kb.retrieve(
|
||||||
|
user_message_text,
|
||||||
|
settings={
|
||||||
|
'sender_id': str(query.sender_id),
|
||||||
|
'session_name': f'{query.session.launcher_type.value}_{query.session.launcher_id}',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
all_results.extend(result)
|
all_results.extend(result)
|
||||||
|
|||||||
@@ -321,13 +321,23 @@ class RuntimeKnowledgeBase(KnowledgeBaseInterface):
|
|||||||
if not plugin_id:
|
if not plugin_id:
|
||||||
raise ValueError(f'No RAG plugin ID configured for KB {kb.uuid}. Retrieval failed.')
|
raise ValueError(f'No RAG plugin ID configured for KB {kb.uuid}. Retrieval failed.')
|
||||||
|
|
||||||
|
# Extract session context before building retrieval_context
|
||||||
|
sender_id = settings.pop('sender_id', None)
|
||||||
|
session_name = settings.pop('session_name', None)
|
||||||
|
|
||||||
|
filters = settings.pop('filters', {})
|
||||||
|
if sender_id is not None:
|
||||||
|
filters['sender_id'] = sender_id
|
||||||
|
if session_name is not None:
|
||||||
|
filters['session_name'] = session_name
|
||||||
|
|
||||||
retrieval_context = {
|
retrieval_context = {
|
||||||
'query': query,
|
'query': query,
|
||||||
'knowledge_base_id': kb.uuid,
|
'knowledge_base_id': kb.uuid,
|
||||||
'collection_id': kb.collection_id or kb.uuid,
|
'collection_id': kb.collection_id or kb.uuid,
|
||||||
'retrieval_settings': settings,
|
'retrieval_settings': settings,
|
||||||
'creation_settings': kb.creation_settings or {},
|
'creation_settings': kb.creation_settings or {},
|
||||||
'filters': settings.pop('filters', {}),
|
'filters': filters,
|
||||||
}
|
}
|
||||||
|
|
||||||
result = await self.ap.plugin_connector.call_rag_retrieve(
|
result = await self.ap.plugin_connector.call_rag_retrieve(
|
||||||
|
|||||||
Reference in New Issue
Block a user