Files
ST-Amily2-Chat-Optimisation/core/rag-processor.js
2025-07-21 07:17:23 +08:00

2 lines
23 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict';const _0x3413e8=_0x4f86;(function(_0x2fd2b1,_0x1423af){const _0x30c399=_0x4f86,_0x8969bb=_0x2fd2b1();while(!![]){try{const _0x438cba=parseInt(_0x30c399(0x202))/0x1*(parseInt(_0x30c399(0x1e5))/0x2)+-parseInt(_0x30c399(0x255))/0x3*(-parseInt(_0x30c399(0x23b))/0x4)+parseInt(_0x30c399(0x1f2))/0x5*(parseInt(_0x30c399(0x20f))/0x6)+parseInt(_0x30c399(0x1fc))/0x7*(-parseInt(_0x30c399(0x21a))/0x8)+-parseInt(_0x30c399(0x26d))/0x9+-parseInt(_0x30c399(0x1ec))/0xa+parseInt(_0x30c399(0x217))/0xb;if(_0x438cba===_0x1423af)break;else _0x8969bb['push'](_0x8969bb['shift']());}catch(_0x122f4c){_0x8969bb['push'](_0x8969bb['shift']());}}}(_0x5d4d,0x78a20));import{extension_prompt_roles,setExtensionPrompt}from'/script.js';import*as _0x5601af from'./utils/context-utils.js';import{defaultSettings as _0x3a47de}from'./rag-settings.js';const MODULE_NAME=_0x3413e8(0x26f),OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME=_0x3413e8(0x1fa);let context=null,settings=null;export{initialize,getSettings,saveSettings,resetSettings,testApiConnection,fetchEmbeddingModels,fetchRerankModels,getVectorCount,purgeStorage,getMessagesForCondensation,processCondensation,ingestTextToHanlinyuan,getCollectionId};function initialize(){const _0x26a106=_0x3413e8;context=SillyTavern[_0x26a106(0x272)]();if(!context){console['error']('[翰林院]\x20未能获取SillyTavern上下文初始化失败。');return;}settings=getSettings();const _0x208934=window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME];typeof _0x208934===_0x26a106(0x203)?(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=async function(..._0x5d84bd){await rearrangeChat(..._0x5d84bd),await _0x208934(..._0x5d84bd);},console['log']('翰林院忆识核心已启动\x20(V5.1-和平共存版),已代理\x20'+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME)):(window[OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME]=rearrangeChat,console['log'](_0x26a106(0x1f0)+OFFICIAL_REARRANGE_CHAT_FUNCTION_NAME));}async function ingestTextToHanlinyuan(_0x3531ed){const _0x37b336=_0x3413e8;if(!settings)return{'success':![],'error':_0x37b336(0x23d)};try{const _0x1e13da=splitIntoChunks(_0x3531ed)[_0x37b336(0x1f6)](_0x229d99=>({'text':_0x229d99}));if(_0x1e13da[_0x37b336(0x226)]===0x0)return{'success':!![]};const _0x1c4195=await insertVectors(_0x1e13da);return{'success':!![],'count':_0x1c4195['count']};}catch(_0x4e0e0b){return console[_0x37b336(0x214)](_0x37b336(0x230),_0x4e0e0b),{'success':![],'error':_0x4e0e0b['message']};}}function getSettings(){const _0x4565e5=_0x3413e8;if(!context||!context[_0x4565e5(0x223)])return structuredClone(_0x3a47de);let _0x414d43=context[_0x4565e5(0x223)][MODULE_NAME];!_0x414d43&&(_0x414d43={},context[_0x4565e5(0x223)][MODULE_NAME]=_0x414d43);for(const _0x51e5c3 in _0x3a47de){if(_0x414d43[_0x51e5c3]===undefined)_0x414d43[_0x51e5c3]=structuredClone(_0x3a47de[_0x51e5c3]);else{if(typeof _0x3a47de[_0x51e5c3]===_0x4565e5(0x209)&&!Array[_0x4565e5(0x24c)](_0x3a47de[_0x51e5c3])&&_0x3a47de[_0x51e5c3]!==null)for(const _0x50e852 in _0x3a47de[_0x51e5c3]){_0x414d43[_0x51e5c3][_0x50e852]===undefined&&(_0x414d43[_0x51e5c3][_0x50e852]=_0x3a47de[_0x51e5c3][_0x50e852]);}}}return _0x414d43;}function _0x5d4d(){const _0x54927b=['Rerank失败:\x20','trim','https://api.openai.com','keys','mes','data','Bearer\x20','extensionSettings','[翰林院-日志]\x20清空目标集合ID:\x20','url','length','模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。','join','slice','忆识存入API错误\x20','忆识重排序完成','getRequestHeaders','神力获取失败\x20','injection','[翰林院-日志]\x20统计目标集合ID:\x20','[翰林院]\x20处理外部文书时发生错误:','toString','success','[翰林院-日志]\x20开始向量插入...','\x20个文本块获取向量...','/v1','apiKey','depth_role','user','/api/vector/list','/v1/rerank','128HehfaT','[翰林院-日志]\x20发送到\x20/api/vector/insert\x20的请求体\x20(仅显示条目数):','核心未初始化','Rerank\x20API\x20URL\x20或\x20Key\x20未提供。','results','/api/vector/query','matchThreshold','saveSettingsDebounced','):\x20','[翰林院]\x20检索或注入时发生错误:','[翰林院-日志]\x20清空宝库API错误:','min','max','original_index','chat','POST','reduce','isArray','webllm','API\x20URL\x20或\x20Key\x20未提供。','model','is_user','charCodeAt','template','find','hybrid_score','42609fWiwCF','json','[翰林院-日志]\x20/api/vector/list\x20响应内容:','queryMessageCount','stringify','batchSize','items','push','api-key','忆识检索失败:\x20','[翰林院-日志]\x20查询成功返回\x20','[翰林院-日志]\x20开始清空宝库...','[翰林院-日志]\x20查询目标集合ID:\x20','宝库查询API错误\x20','abs','[翰林院-日志]\x20统计成功向量总数:\x20','notify','[翰林院-日志]\x20/api/vector/query\x20响应状态:\x20','top_n','openai','quiet','index','[翰林院-日志]\x20忆识存入API调用成功。','[翰林院-日志]\x20发送到\x20/api/vector/purge\x20的请求体:','3334968CAbjmv','log','hanlinyuan-rag-core','/api/vector/insert','maxResults','getContext','\x20获取模型列表...','[翰林院-Rerank]\x20Rerank\x20失败回退到原始相似度排序。','score','Rerank模型API的响应格式无效:\x20未找到\x20\x27data\x27\x20数组。','custom','2KURtEt','[翰林院-Rerank]\x20混合分数排序后的结果:','sort','凝识之权未开启','[翰林院-Rerank]\x20正在从\x20','[翰林院-日志]\x20成功获取\x20','text','6701750jcDUYf','hashes','warning','depth','翰林院忆识核心已启动\x20(V5.1-借壳上市版),已注册全局函数:\x20','azure','20185JanlkL','[翰林院-日志]\x20/api/vector/purge\x20响应状态:\x20','condensation','[翰林院-日志]\x20清空宝库API调用成功。','map','message','rerank','/embeddings','vectors_rearrangeChat','[翰林院-日志]\x20没有需要插入的文本块操作完成。','1085XSieac','获取Rerank模型列表失败\x20(','[翰林院-日志]\x20发送到\x20/api/vector/query\x20的请求体:','[翰林院-日志]\x20开始向量查询\x20(采用最终API交互模式)...','GET','application/json','323248usHtZD','function','now','[翰林院-日志]\x20发送到\x20/api/vector/list\x20的请求体:','enabled','[翰林院-日志]\x20插入目标集合ID:\x20','embedding','object','No\x20messages\x20to\x20process.','status','advanced','endsWith','[翰林院-日志]\x20/api/vector/query\x20响应内容:','426WukGyq','Authorization','embeddingModel','\x20条结果。','retrieval','error','/rerank','请先配置API\x20Key','11611523twzpoX','filter','replace','30200cgVNHw','messageTypes'];_0x5d4d=function(){return _0x54927b;};return _0x5d4d();}function saveSettings(){const _0x1c94c2=_0x3413e8;if(context)context[_0x1c94c2(0x242)]();}function resetSettings(){context&&(context['extensionSettings'][MODULE_NAME]=structuredClone(_0x3a47de),saveSettings());}function showNotification(_0x532e72,_0x5af33b='info'){toastr[_0x5af33b](_0x532e72);}function splitIntoChunks(_0x5a96a2){const _0xd71736=_0x3413e8,{chunkSize:_0x1cb5fb,overlap:_0x55564b}=settings[_0xd71736(0x20c)],_0x26ba41=[];if(!_0x5a96a2||_0x1cb5fb<=0x0)return _0x26ba41;let _0x4ad672=0x0;while(_0x4ad672<_0x5a96a2[_0xd71736(0x226)]){const _0x4c3356=Math[_0xd71736(0x246)](_0x4ad672+_0x1cb5fb,_0x5a96a2[_0xd71736(0x226)]);_0x26ba41[_0xd71736(0x25c)](_0x5a96a2['substring'](_0x4ad672,_0x4c3356)),_0x4ad672+=_0x1cb5fb-_0x55564b;}return _0x26ba41;}import{getCollectionId}from'./utils/context-utils.js';function generateHash(_0xf926a6){const _0x39e6d3=_0x3413e8;let _0x4c1098=0x0;for(let _0x1dfa86=0x0;_0x1dfa86<_0xf926a6[_0x39e6d3(0x226)];_0x1dfa86++){const _0x54ea79=_0xf926a6[_0x39e6d3(0x251)](_0x1dfa86);_0x4c1098=(_0x4c1098<<0x5)-_0x4c1098+_0x54ea79,_0x4c1098=_0x4c1098&_0x4c1098;}return Math[_0x39e6d3(0x263)](_0x4c1098)[_0x39e6d3(0x231)](0x24);}function getSanitizedBaseUrl(_0x64b871){const _0x31f562=_0x3413e8;let _0x4a3da2=_0x64b871[_0x31f562(0x21d)]();return _0x4a3da2['endsWith']('/')&&(_0x4a3da2=_0x4a3da2[_0x31f562(0x229)](0x0,-0x1)),_0x4a3da2[_0x31f562(0x20d)](_0x31f562(0x235))&&(_0x4a3da2=_0x4a3da2[_0x31f562(0x229)](0x0,-0x3)),_0x4a3da2[_0x31f562(0x20d)](_0x31f562(0x1f9))&&(_0x4a3da2=_0x4a3da2['slice'](0x0,-0xb)),_0x4a3da2;}async function fetchEmbeddingModels(){const _0x188e80=_0x3413e8,{apiKey:_0x1a0696}=settings[_0x188e80(0x213)],_0x54ec0d=getApiEndpointUrl(!![]);if(!_0x54ec0d||!_0x1a0696)throw new Error(_0x188e80(0x24e));const _0x4ff528=getSanitizedBaseUrl(_0x54ec0d),_0x554b6a=_0x4ff528+'/v1/models';console[_0x188e80(0x26e)]('[翰林院]\x20正在从\x20'+_0x554b6a+_0x188e80(0x273));const _0x4fd28d=await fetch(_0x554b6a,{'method':'GET','headers':getApiHeaders()});if(!_0x4fd28d['ok']){const _0x5e4e7a=await _0x4fd28d[_0x188e80(0x1eb)]();throw new Error('获取模型列表失败\x20('+_0x4fd28d[_0x188e80(0x20b)]+_0x188e80(0x243)+_0x5e4e7a);}const _0x3cbc46=await _0x4fd28d[_0x188e80(0x256)]();if(!_0x3cbc46[_0x188e80(0x221)]||!Array[_0x188e80(0x24c)](_0x3cbc46['data']))throw new Error(_0x188e80(0x227));return _0x3cbc46[_0x188e80(0x221)][_0x188e80(0x1f6)](_0x9225fb=>_0x9225fb['id'])[_0x188e80(0x1e7)]();}function getRerankBaseUrl(_0x207a80){const _0x3990c2=_0x3413e8;let _0x25d8f1=_0x207a80[_0x3990c2(0x21d)]();return _0x25d8f1['endsWith']('/')&&(_0x25d8f1=_0x25d8f1[_0x3990c2(0x229)](0x0,-0x1)),_0x25d8f1['endsWith'](_0x3990c2(0x235))&&(_0x25d8f1=_0x25d8f1['slice'](0x0,-0x3)),_0x25d8f1['endsWith'](_0x3990c2(0x215))&&(_0x25d8f1=_0x25d8f1[_0x3990c2(0x229)](0x0,-0x7)),_0x25d8f1;}function _0x4f86(_0x12cd16,_0xc495b3){const _0x5d4d86=_0x5d4d();return _0x4f86=function(_0x4f863c,_0x4b2b00){_0x4f863c=_0x4f863c-0x1e5;let _0x4b1d18=_0x5d4d86[_0x4f863c];return _0x4b1d18;},_0x4f86(_0x12cd16,_0xc495b3);}async function fetchRerankModels(){const _0x59e841=_0x3413e8,{url:_0x4c7f7,apiKey:_0x1efa77}=settings[_0x59e841(0x1f8)];if(!_0x4c7f7||!_0x1efa77)throw new Error(_0x59e841(0x23e));const _0x5cec68=getRerankBaseUrl(_0x4c7f7),_0x2a0042=_0x5cec68+'/v1/models';console[_0x59e841(0x26e)](_0x59e841(0x1e9)+_0x2a0042+'\x20获取模型列表...');const _0x10968c=await fetch(_0x2a0042,{'method':_0x59e841(0x200),'headers':{'Authorization':_0x59e841(0x222)+_0x1efa77}});if(!_0x10968c['ok']){const _0x21775c=await _0x10968c['text']();throw new Error(_0x59e841(0x1fd)+_0x10968c[_0x59e841(0x20b)]+_0x59e841(0x243)+_0x21775c);}const _0x54d696=await _0x10968c[_0x59e841(0x256)]();if(!_0x54d696['data']||!Array[_0x59e841(0x24c)](_0x54d696[_0x59e841(0x221)]))throw new Error(_0x59e841(0x276));return _0x54d696[_0x59e841(0x221)]['map'](_0x506bdb=>_0x506bdb['id'])[_0x59e841(0x1e7)]();}function getApiEndpointUrl(_0x2d4f32=![]){const _0x3beb88=_0x3413e8,{apiEndpoint:_0x2e1952,customApiUrl:_0x544d4c}=settings['retrieval'];let _0x21c81f;switch(_0x2e1952){case _0x3beb88(0x268):_0x21c81f=_0x3beb88(0x21e);break;case _0x3beb88(0x1f1):case _0x3beb88(0x277):_0x21c81f=_0x544d4c;break;default:_0x21c81f=_0x3beb88(0x21e);break;}if(_0x2d4f32)return _0x21c81f;return getSanitizedBaseUrl(_0x21c81f)+'/v1/embeddings';}function getApiHeaders(){const _0x4084da=_0x3413e8,_0x22d7bc={'Content-Type':_0x4084da(0x201)},{apiKey:_0x417a27,apiEndpoint:_0x244c1d}=settings[_0x4084da(0x213)];switch(_0x244c1d){case _0x4084da(0x268):case'custom':_0x22d7bc[_0x4084da(0x210)]=_0x4084da(0x222)+_0x417a27;break;case _0x4084da(0x1f1):_0x22d7bc[_0x4084da(0x25d)]=_0x417a27;break;}return _0x22d7bc;}async function getEmbeddings(_0x18a4ae){const _0x795df6=_0x3413e8;if(!settings['retrieval'][_0x795df6(0x236)])throw new Error(_0x795df6(0x216));const _0xe504d3=getApiEndpointUrl(),_0x51deee=getApiHeaders(),_0x1e61b5=settings[_0x795df6(0x213)][_0x795df6(0x211)],_0x3e88de=settings[_0x795df6(0x213)][_0x795df6(0x25a)]||0x5,_0x3d8d2d=[];for(let _0x5609c0=0x0;_0x5609c0<_0x18a4ae['length'];_0x5609c0+=_0x3e88de){const _0x503d90=_0x18a4ae[_0x795df6(0x229)](_0x5609c0,_0x5609c0+_0x3e88de),_0x2c5331=await fetch(_0xe504d3,{'method':_0x795df6(0x24a),'headers':_0x51deee,'body':JSON[_0x795df6(0x259)]({'input':_0x503d90,'model':_0x1e61b5})});if(!_0x2c5331['ok']){const _0x54f6ba=await _0x2c5331[_0x795df6(0x1eb)]();throw new Error(_0x795df6(0x22d)+_0x2c5331[_0x795df6(0x20b)]+':\x20'+_0x54f6ba);}const _0xd12b4a=await _0x2c5331['json']();_0x3d8d2d[_0x795df6(0x25c)](..._0xd12b4a['data'][_0x795df6(0x1f6)](_0x1ceb57=>_0x1ceb57[_0x795df6(0x208)])),_0x5609c0+_0x3e88de<_0x18a4ae['length']&&await new Promise(_0x597413=>setTimeout(_0x597413,0xc8));}return _0x3d8d2d;}async function queryVectors(_0x111910){const _0x4784c7=_0x3413e8;console[_0x4784c7(0x26e)](_0x4784c7(0x1ff));const _0x19d6c4=getCollectionId();console[_0x4784c7(0x26e)](_0x4784c7(0x261)+_0x19d6c4);const _0xe0f492=(await getEmbeddings([_0x111910]))[0x0],_0x38078d={'collectionId':_0x19d6c4,'searchText':_0x111910,'topK':settings[_0x4784c7(0x20c)]['maxResults'],'threshold':settings[_0x4784c7(0x20c)][_0x4784c7(0x241)],'source':_0x4784c7(0x24d),'embeddings':{[_0x111910]:_0xe0f492}};console[_0x4784c7(0x26e)](_0x4784c7(0x1fe),JSON[_0x4784c7(0x259)](_0x38078d,null,0x2));const _0x29bad9=await fetch(_0x4784c7(0x240),{'method':_0x4784c7(0x24a),'headers':context[_0x4784c7(0x22c)](),'body':JSON[_0x4784c7(0x259)](_0x38078d)});console['log'](_0x4784c7(0x266)+_0x29bad9['status']);if(!_0x29bad9['ok']){const _0x5b9011=await _0x29bad9[_0x4784c7(0x1eb)]();console['error']('[翰林院-日志]\x20宝库查询API错误:',_0x5b9011);throw new Error(_0x4784c7(0x262)+_0x29bad9[_0x4784c7(0x20b)]+':\x20'+_0x5b9011);}const _0x4964a0=await _0x29bad9[_0x4784c7(0x256)]();console[_0x4784c7(0x26e)](_0x4784c7(0x20e),_0x4964a0);const _0x554f0c=_0x4964a0['metadata']||_0x4964a0[_0x4784c7(0x23f)]||_0x4964a0[_0x4784c7(0x221)]||[];return console[_0x4784c7(0x26e)](_0x4784c7(0x25f)+_0x554f0c[_0x4784c7(0x226)]+_0x4784c7(0x212)),_0x554f0c;}async function insertVectors(_0x245d4f){const _0x2f67c4=_0x3413e8;console[_0x2f67c4(0x26e)](_0x2f67c4(0x233));const _0x1e3653=getCollectionId();console[_0x2f67c4(0x26e)](_0x2f67c4(0x207)+_0x1e3653);const _0x215de6=_0x245d4f[_0x2f67c4(0x1f6)](_0x429601=>_0x429601[_0x2f67c4(0x1eb)]);if(_0x215de6[_0x2f67c4(0x226)]===0x0)return console[_0x2f67c4(0x26e)](_0x2f67c4(0x1fb)),{'success':!![],'count':0x0};console[_0x2f67c4(0x26e)]('[翰林院-日志]\x20正在为\x20'+_0x215de6[_0x2f67c4(0x226)]+_0x2f67c4(0x234));const _0x229ea0=await getEmbeddings(_0x215de6);console[_0x2f67c4(0x26e)](_0x2f67c4(0x1ea)+_0x229ea0[_0x2f67c4(0x226)]+'\x20个向量。');const _0x148c6a=_0x245d4f[_0x2f67c4(0x1f6)]((_0x579090,_0x4a7dd0)=>({'hash':generateHash(_0x579090['text']+Date[_0x2f67c4(0x204)]()+_0x4a7dd0),'text':_0x579090[_0x2f67c4(0x1eb)]})),_0x4fa414=_0x148c6a[_0x2f67c4(0x24b)]((_0x3f5ba0,_0xb05e05,_0x196ab9)=>{const _0x160642=_0x2f67c4;return _0x3f5ba0[_0xb05e05[_0x160642(0x1eb)]]=_0x229ea0[_0x196ab9],_0x3f5ba0;},{}),_0x1698d5={'collectionId':_0x1e3653,'items':_0x148c6a,'source':_0x2f67c4(0x24d),'embeddings':_0x4fa414};console[_0x2f67c4(0x26e)](_0x2f67c4(0x23c),{'collectionId':_0x1698d5['collectionId'],'source':_0x1698d5['source'],'itemCount':_0x1698d5[_0x2f67c4(0x25b)]['length'],'embeddingCount':Object[_0x2f67c4(0x21f)](_0x1698d5['embeddings'])[_0x2f67c4(0x226)]});const _0x1a8cd1=await fetch(_0x2f67c4(0x270),{'method':_0x2f67c4(0x24a),'headers':context[_0x2f67c4(0x22c)](),'body':JSON[_0x2f67c4(0x259)](_0x1698d5)});console[_0x2f67c4(0x26e)]('[翰林院-日志]\x20/api/vector/insert\x20响应状态:\x20'+_0x1a8cd1['status']);if(!_0x1a8cd1['ok']){const _0xfc33c9=await _0x1a8cd1[_0x2f67c4(0x1eb)]();console[_0x2f67c4(0x214)]('[翰林院-日志]\x20忆识存入API错误:',_0xfc33c9);throw new Error(_0x2f67c4(0x22a)+_0x1a8cd1[_0x2f67c4(0x20b)]+':\x20'+_0xfc33c9);}return console[_0x2f67c4(0x26e)](_0x2f67c4(0x26b)),{'success':!![],'count':_0x148c6a[_0x2f67c4(0x226)]};}async function testApiConnection(){await getEmbeddings(['测试连接']);}async function getVectorCount(){const _0x394d5a=_0x3413e8;console[_0x394d5a(0x26e)]('[翰林院-日志]\x20开始获取向量总数...');const _0x503d43=getCollectionId();console[_0x394d5a(0x26e)](_0x394d5a(0x22f)+_0x503d43);const _0x43fe84={'collectionId':_0x503d43,'source':'webllm','embeddings':{}};console[_0x394d5a(0x26e)](_0x394d5a(0x205),JSON['stringify'](_0x43fe84,null,0x2));const _0x41bb50=await fetch(_0x394d5a(0x239),{'method':'POST','headers':context[_0x394d5a(0x22c)](),'body':JSON[_0x394d5a(0x259)](_0x43fe84)});console[_0x394d5a(0x26e)]('[翰林院-日志]\x20/api/vector/list\x20响应状态:\x20'+_0x41bb50['status']);if(!_0x41bb50['ok']){const _0xf18e1f=await _0x41bb50[_0x394d5a(0x1eb)]();return console[_0x394d5a(0x214)]('[翰林院-日志]\x20获取向量列表API错误:',_0xf18e1f),0x0;}const _0x5e29b8=await _0x41bb50['json']();console[_0x394d5a(0x26e)](_0x394d5a(0x257),_0x5e29b8);let _0x4f62ce=0x0;if(Array[_0x394d5a(0x24c)](_0x5e29b8))_0x4f62ce=_0x5e29b8['length'];else _0x5e29b8&&_0x5e29b8['hashes']&&(_0x4f62ce=_0x5e29b8[_0x394d5a(0x1ed)][_0x394d5a(0x226)]);return console[_0x394d5a(0x26e)](_0x394d5a(0x264)+_0x4f62ce),_0x4f62ce;}async function purgeStorage(){const _0x46b223=_0x3413e8;console[_0x46b223(0x26e)](_0x46b223(0x260));const _0x199487=getCollectionId();console[_0x46b223(0x26e)](_0x46b223(0x224)+_0x199487);const _0x4604e0={'collectionId':_0x199487};console[_0x46b223(0x26e)](_0x46b223(0x26c),JSON[_0x46b223(0x259)](_0x4604e0,null,0x2));const _0xa9dc49=await fetch('/api/vector/purge',{'method':_0x46b223(0x24a),'headers':context[_0x46b223(0x22c)](),'body':JSON[_0x46b223(0x259)](_0x4604e0)});console[_0x46b223(0x26e)](_0x46b223(0x1f3)+_0xa9dc49[_0x46b223(0x20b)]);if(!_0xa9dc49['ok']){const _0x4977c1=await _0xa9dc49[_0x46b223(0x1eb)]();console['error'](_0x46b223(0x245),_0x4977c1);}else console[_0x46b223(0x26e)](_0x46b223(0x1f5));return _0xa9dc49['ok'];}function getMessagesForCondensation(_0x51a914=null){const _0x2bd131=_0x3413e8;if(!settings[_0x2bd131(0x1f4)][_0x2bd131(0x206)])return showNotification(_0x2bd131(0x1e8),_0x2bd131(0x1ee)),[];const {layerStart:_0x2dda84,layerEnd:_0x2df5a9}=settings[_0x2bd131(0x1f4)],_0x40d450=_0x51a914||settings[_0x2bd131(0x1f4)][_0x2bd131(0x21b)],_0xf24f8=context['chat']['length'],_0x5051f5=Math[_0x2bd131(0x247)](0x0,_0x2dda84-0x1),_0x3cb240=Math[_0x2bd131(0x246)](_0xf24f8,_0x2df5a9),_0x2e80e9=context[_0x2bd131(0x249)][_0x2bd131(0x229)](_0x5051f5,_0x3cb240);return _0x2e80e9[_0x2bd131(0x218)](_0x1be70a=>{const _0x43ae21=_0x2bd131,_0x1f4ed0=_0x1be70a[_0x43ae21(0x250)]===!![],_0x473a78=_0x1be70a[_0x43ae21(0x250)]===![];if(!_0x1be70a[_0x43ae21(0x220)]||!_0x1be70a[_0x43ae21(0x220)][_0x43ae21(0x21d)]())return![];return _0x40d450[_0x43ae21(0x238)]&&_0x1f4ed0||_0x40d450['ai']&&_0x473a78;});}async function processCondensation(_0x62c67f){const _0x77bb14=_0x3413e8;if(!_0x62c67f||_0x62c67f['length']===0x0)return{'success':![],'error':_0x77bb14(0x20a)};const _0x3d1671=_0x62c67f[_0x77bb14(0x1f6)](_0xec38eb=>({'text':(_0xec38eb['mes']||'')[_0x77bb14(0x219)](/<[^>]*>/g,'')[_0x77bb14(0x21d)]()}))[_0x77bb14(0x218)](_0xdc449f=>_0xdc449f[_0x77bb14(0x1eb)][_0x77bb14(0x226)]>0x0),_0x42522f=_0x3d1671['flatMap'](_0x5d907a=>splitIntoChunks(_0x5d907a['text'])['map'](_0x1d2bce=>({'text':_0x1d2bce})));if(_0x42522f['length']===0x0)return{'success':![],'error':'No\x20valid\x20chunks\x20generated.'};return await insertVectors(_0x42522f);}async function rerankResults(_0x1b4896,_0x414fe5,_0x2ea1ae){const _0x269ae1=_0x3413e8;if(!_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x206)]||_0x1b4896[_0x269ae1(0x226)]===0x0)return _0x1b4896[_0x269ae1(0x1e7)]((_0x2327ce,_0x38422d)=>(_0x38422d[_0x269ae1(0x275)]||0x0)-(_0x2327ce[_0x269ae1(0x275)]||0x0)),_0x1b4896['slice'](0x0,_0x2ea1ae[_0x269ae1(0x20c)]['maxResults']);console[_0x269ae1(0x26e)]('[翰林院-Rerank]\x20开始重排序...');try{const _0x24a0e2=_0x1b4896[_0x269ae1(0x1f6)]((_0x47b6c4,_0x366419)=>({'text':_0x47b6c4['text'],'original_index':_0x366419})),_0x590fb3=getRerankBaseUrl(_0x2ea1ae['rerank'][_0x269ae1(0x225)]),_0x3d4431=_0x590fb3+_0x269ae1(0x23a),_0x104e8f=await fetch(_0x3d4431,{'method':_0x269ae1(0x24a),'headers':{'Content-Type':_0x269ae1(0x201),'Authorization':_0x269ae1(0x222)+_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x236)]},'body':JSON['stringify']({'query':_0x414fe5,'documents':_0x24a0e2['map'](_0x2f2c40=>_0x2f2c40[_0x269ae1(0x1eb)]),'model':_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x24f)],'top_n':_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x267)]})});if(!_0x104e8f['ok']){const _0x59c461=await _0x104e8f['text']();throw new Error('Rerank\x20API\x20请求失败\x20('+_0x104e8f[_0x269ae1(0x20b)]+'):\x20'+_0x59c461);}const _0x580bd6=await _0x104e8f[_0x269ae1(0x256)]();console['log']('[翰林院-Rerank]\x20Rerank\x20API\x20响应:',_0x580bd6);const _0x4a8697=_0x1b4896['map']((_0x7c2d23,_0x7b285f)=>({..._0x7c2d23,'original_index':_0x7b285f})),_0x56058f=_0x2ea1ae['rerank']['hybrid_alpha'],_0x1b1b1c=_0x4a8697[_0x269ae1(0x1f6)](_0x3287f6=>{const _0x132463=_0x269ae1,_0x2b267c=_0x580bd6[_0x132463(0x23f)][_0x132463(0x253)](_0x3d87ab=>_0x3d87ab[_0x132463(0x26a)]===_0x3287f6[_0x132463(0x248)]),_0x51c8dc=_0x2b267c?_0x2b267c['relevance_score']:0x0,_0x947376=_0x51c8dc*_0x56058f+(_0x3287f6[_0x132463(0x275)]||0x0)*(0x1-_0x56058f);return{..._0x3287f6,'hybrid_score':_0x947376,'rerank_score':_0x51c8dc};});return _0x1b1b1c[_0x269ae1(0x1e7)]((_0x1337d6,_0xa950fa)=>(_0xa950fa['hybrid_score']||0x0)-(_0x1337d6[_0x269ae1(0x254)]||0x0)),console[_0x269ae1(0x26e)](_0x269ae1(0x1e6),_0x1b1b1c[_0x269ae1(0x229)](0x0,_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x267)])),_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x265)]&&showNotification(_0x269ae1(0x22b),_0x269ae1(0x232)),_0x1b1b1c['slice'](0x0,_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x267)]);}catch(_0x3043c8){return console[_0x269ae1(0x214)](_0x269ae1(0x274),_0x3043c8),_0x2ea1ae[_0x269ae1(0x1f8)][_0x269ae1(0x265)]&&showNotification(_0x269ae1(0x21c)+_0x3043c8[_0x269ae1(0x1f7)],_0x269ae1(0x214)),_0x1b4896[_0x269ae1(0x1e7)]((_0x1764ab,_0x7405f5)=>(_0x7405f5['score']||0x0)-(_0x1764ab[_0x269ae1(0x275)]||0x0)),_0x1b4896[_0x269ae1(0x229)](0x0,_0x2ea1ae[_0x269ae1(0x20c)][_0x269ae1(0x271)]);}}async function rearrangeChat(_0x14fefd,_0x50af3c,_0x3ecdf8,_0x4ca33c){const _0x3b36c5=_0x3413e8;setExtensionPrompt('HANLINYUAN_RAG','',settings['injection']['position'],settings[_0x3b36c5(0x22e)][_0x3b36c5(0x1ef)],![],settings[_0x3b36c5(0x22e)][_0x3b36c5(0x237)]);if(_0x4ca33c===_0x3b36c5(0x269)||!settings[_0x3b36c5(0x213)][_0x3b36c5(0x206)])return;const _0x2ad1bc=_0x14fefd['slice'](-settings[_0x3b36c5(0x20c)][_0x3b36c5(0x258)]);if(_0x2ad1bc[_0x3b36c5(0x226)]===0x0)return;const _0x90a208=_0x2ad1bc[_0x3b36c5(0x1f6)](_0x2b6326=>_0x2b6326['mes'])[_0x3b36c5(0x228)]('\x20')['replace'](/<[^>]*>/g,'')[_0x3b36c5(0x21d)]();if(!_0x90a208)return;try{const _0x252e94=await queryVectors(_0x90a208);if(_0x252e94['length']===0x0)return;const _0x29c0f0=await rerankResults(_0x252e94,_0x90a208,settings);if(_0x29c0f0[_0x3b36c5(0x226)]===0x0)return;const _0x127f7b=_0x29c0f0['map'](_0x4a83a7=>_0x4a83a7[_0x3b36c5(0x1eb)])[_0x3b36c5(0x228)]('\x0a\x0a'),_0x4fc43c=settings[_0x3b36c5(0x22e)][_0x3b36c5(0x252)][_0x3b36c5(0x219)]('{{text}}',_0x127f7b);setExtensionPrompt('HANLINYUAN_RAG',_0x4fc43c,settings[_0x3b36c5(0x22e)]['position'],settings[_0x3b36c5(0x22e)]['depth'],![],settings[_0x3b36c5(0x22e)][_0x3b36c5(0x237)]);}catch(_0x3031d8){console[_0x3b36c5(0x214)](_0x3b36c5(0x244),_0x3031d8);if(settings[_0x3b36c5(0x213)][_0x3b36c5(0x265)])showNotification(_0x3b36c5(0x25e)+_0x3031d8[_0x3b36c5(0x1f7)],_0x3b36c5(0x214));}}