From 51c0e7c152b3e07ac274025a706e8f4cd064d7b5 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Mon, 30 Jun 2025 21:00:20 +0800 Subject: [PATCH 1/2] 'commit' --- dsRag/ElasticSearch/T2_SplitTxt.py | 1 - dsRag/Txt/CHEMISTRY_1_1.txt | 2 +- dsRag/Util/EsSearchUtil.py | 2 +- .../__pycache__/EsSearchUtil.cpython-310.pyc | Bin 6091 -> 6091 bytes .../Txt/化学方程式_CHEMISTRY_1.docx | Bin 41912 -> 42055 bytes dsRag/static/ai.html | 2 +- 6 files changed, 3 insertions(+), 4 deletions(-) diff --git a/dsRag/ElasticSearch/T2_SplitTxt.py b/dsRag/ElasticSearch/T2_SplitTxt.py index 824638d4..630e224f 100644 --- a/dsRag/ElasticSearch/T2_SplitTxt.py +++ b/dsRag/ElasticSearch/T2_SplitTxt.py @@ -4,7 +4,6 @@ import shutil import warnings import zipfile -import docx from docx import Document from docx.oxml.ns import nsmap diff --git a/dsRag/Txt/CHEMISTRY_1_1.txt b/dsRag/Txt/CHEMISTRY_1_1.txt index fdd4c525..55c628e7 100644 --- a/dsRag/Txt/CHEMISTRY_1_1.txt +++ b/dsRag/Txt/CHEMISTRY_1_1.txt @@ -1,2 +1,2 @@ -氢气与氧气燃烧的方程式 +氧化铁和硝酸的反应方程式 $$ FeO+4HNO_{ 3 } ⇒Fe(NO_{ 3 } )_{ 3 } +2H_{ 2 } O+NO_{ 2 } ↑ $$ \ No newline at end of file diff --git a/dsRag/Util/EsSearchUtil.py b/dsRag/Util/EsSearchUtil.py index 36dea7c1..a3f66bd4 100644 --- a/dsRag/Util/EsSearchUtil.py +++ b/dsRag/Util/EsSearchUtil.py @@ -176,7 +176,7 @@ class EsSearchUtil: filtered_vector_hits = [] vector_int = 0 for hit in vector_results['hits']['hits']: - if hit['_score'] > 0.4: # 阀值0.4 + if hit['_score'] > 0.6: # 阀值0.6 logger.info(f" {vector_int + 1}. 文档ID: {hit['_id']}, 相似度分数: {hit['_score']:.2f}") logger.info(f" 内容: {hit['_source']['user_input']}") filtered_vector_hits.append(hit) diff --git a/dsRag/Util/__pycache__/EsSearchUtil.cpython-310.pyc b/dsRag/Util/__pycache__/EsSearchUtil.cpython-310.pyc index 7cdb86aa46b61156470b441e97c2372e0320a070..7b6e7bc56d2747d602f707240524e3c2b78694c6 100644 GIT binary patch delta 33 kcmX@De_EeApO=@50SGGElQwdH5o9+8gU6fMgpRTT0Gp`^W&i*H delta 33 lcmX@De_EeApO=@50SIp1Pu$4;MUZ{gOc1!anN8>@D*(Vb40!+m diff --git a/dsRag/static/Txt/化学方程式_CHEMISTRY_1.docx b/dsRag/static/Txt/化学方程式_CHEMISTRY_1.docx index 04d1a434eaa18d69aa6dca52cae67a5bf7362ec1..4ebc9a7b8b4b6775e0f4e74984683e6be0917855 100644 GIT binary patch delta 4663 zcmV-763Fei#{$R50qN&zDfuH0A?Kk01*HH0C#V4WG`fIV|8t1ZgehqZEVC@ zTW=&s6@EwJKeU=x)_uRScI>(IV##5x>>?hca(B&4$K74M)ivXBo+w~Xuy~x)LMQ-HRN++_AF3lE z%23m)ctmqj9pq`uS;Yq8AZEG727@%F+7;u8X6lA6TP0^Pttyb$CB=kPY6BNfw?j)f zxq`(AXlwC^a6zXFe+*-15Jw9%e;vr&0|<6#8tYKj&QPv~TCD-udjWw~Ye>$1NEh27N zq{ZbP8o{bLLT)8HBY0ZQ5}H}b422!4V_t;K`bYEisCrnhe{a6#D`>WzSP&OzbSkn+ z%+~U4Y*#PuHN+yVrg55q9a&M0(sIrY`Mzi{IGTY>?lZt7&t~(kN@L4ZyNlX-wHp?I z+o<38F3)Ps??*KBExd^k^A+2uuq<x( z^OlXu;lmQ)31{PSftEfD?Q}tjS6H0vfYl^aJISkuDf4VZN?^)74o`;#nP`n5I+q{k^;g6SQNjFCTEIL?DsfV!MAeQS zYx7Cs=*{o{_U6kk4D1v2h+Nzj-90g*s9y`%1sh!uRwaqSVkM^)uTPiI;j>)#vaR=RryIG;UUq}76}dfo$;)Qn^F4Eumkr18-P$r`qv_TPqgu`6 z8S*)AiQ5hhKv>9Bl!20M@< z9x;xVaGU@Pe>hV}>_M7k6eJDsLd4l+-IkijN96;S ze-@Rv#&PXNO3Vi{$taPAcX+iM_FO)K!((DW#f0QO-r0C76dS*4w zm1A8oHgxOo@7P%C1};jJV-u!JYp?WMiZnwlPzrn7r0>&oI1-x_0+lu_cJGkv-7i^U z`pul>jc!Ob`R2JxO6IsY)2-Se@e1TI@V5=P}xj&(zRO2)`QpJMExtBIgRt6Pku! zitml&Rzo8=Fr8AW#&C*^xilw3is!t-L&S&tuyKY+g`Cq;293+;b_qf1h7a zs94T98=m&y@x@ry*ay95?>+|{d6wb8vf3E2Cvww=Y8TQUOs6U}uAFT6hUuGzV+ZO& zEvL!+I_2*tK+iV<-*Js)0`!`{B?62hGYU>N5#aL3d3`Wh(TP-KO=8qD{6JDq`(W+% zqQEjFA+=6739>=r@_w2O)qIef3P%fv`aXDMnFOvBhIk1O84_17#Nh3_M4H|*?yY!Kqf4>q-E4KW9 zRSSkEtAkdxFiYW9wa|%9I%XFG{SGE}-_FE-&>~`g3l?_&w=C>#&%%!0VqtG13;!2_ zYjZZbf!EQ4&I+yWN8}q=+deTYy}x=+=&sT4Mcw5>xgooatUaf}Z-SyN<@L{h^ZJXw zzk2!OS1ZB!=EVd*96mdJlBS;$Jf9YmgifZErSbY4F-@EfBkxHCWWC%Ab;fN z#f*zf{L$l_OCEvXtJ$-5U0o5wjQ9tWC!Ca{G>$lol=XgwIMn4G6E?inAz z6syicE6s**A{uRNf89lvmJwX{aJ$$B8l_0pl1Y7pAb9DcA|7EAZ-(!I6A-I4AaNH^ z_*BUxA>nkubNpt5fijgLcHM*+!HB&#T(!mWl2_shWx0Zl=B|SMWO7zD+RUaj>eLFz zCj6H(TK;T5*TGb0sLbDa;x4mO1wzj^m6sc7N0Q6%*@rNAe+6DK0{mG7hy~iNZ%NbQ z1SmzISFjTLZM$YQJc8lT$D2G>Cql4%F`UssYji|OLP4(Y$SP;Rn83#%kZ(+eV<8`# z`YL7_l3P>Q+GcZ4fJ}eF@oimL*9d5cN{WKUc?vEDx6CV*+6=N;zrjO`HNQL@{RaR5 z|NjF3P)h>@lbV4FlL(*=vn3CeYzYg`=|1NL005HEr?CI$&orYR3t~HTXbVz9k(W*qWbZ18_T#-2dnh_f0+M?H&6C z$K6v_9W7qso;2tfEivbCK}|h4NZQlJ{x?L&y)R&Y@BWC23d|i_t8GuE~larr%_rGEF(X+O(9RRSoVy>Wtv_N6I_-F9cEkQA_-wU(9WE&&kF*u2&Q7*D6wbq7F;Hv$f%bcU+OF0vw}_z?ua6>Do>R`&q%hO&O^jCHso97!*h(25bRt_%3p@yKf zVo4tHysh5DDF`s?2>-kXKXL%Ka_5im?rskqE-->9LNom}o2ff1YSP^hcs%T?t>F3n zvdzePjTvk};6dKNvm=b|Rh;#U{#E;bLWX?>Whi?dq-=SYQXyz_dFZwf>;HF?>M>8w z-x*9u6(1I#p%fieZ8wVYc&kp63{EAz#qLtl4)_Ygpoq_r!Dq=lKJ8RUGoS`Jn%jJ9VGOqCz+nTpdXJo~AD zHlfCYYjm0jaXbF9lnnwSF6Nw|nf16GFFxq_mo;0;?t*Vn*Xbs;+Bh?-mSd44%>?|a z;OkfYSZ&-Ma~0-lO#MKAr93QX_luLv9b{*E-XQZ%GJlZyCs{Daf|D#9WTBL8VJu-a zY44z44ofLt)4Ha6TwR{e2Y4q>Cqc9j%q0IrCzM!X|cgWv5LQ^axAV}og+P5(&)7dp-& z8QWQrkNqUK$FXPIW2i9>bez0Miuu3&yB+?2U4$N-DFS zlgHH}z95lDZX_=&19P$iPcDnolU&$LR1WT4Wx=5W9|b4lGhyfC9nof#dhrgL`$-^7 z5Z@}NIfmA)spaC6uYsnF&8U9{#WZP=q0je8ciVxCLPA-WXRka>Z*Er$Qlux1xW~hCm47hEF@Q-qFn3uzGJzcEAv|v&(!oE%FSl zbV}QLnZJ~`ldC+7NmwO}v$)KU81ofBJ%Q)oJcgt(W+Y+bGH+7y3&x^suoZDiZA+cX zg;pejp=PeCw8V{*`xb3tXGJk*_i*D`T}+?D8d)O`U=*K2tp>>Aitu~5riA> zjg}(OYWahf!9`c4?CH~Q){O%jUjfRnMY#_;9eDw44B=ke-bY`MuOR9md|~rtZa}b= z!r+?H^GcYAz73vK3OP=Y zzDfuH0A?MN)1OZPYLg?NNdfAUZJ~0`O9FNmlQ9<;lZBuVlO&-U0`nP@v7j51 zTcIxjdXtNxLIM1f&Y>tA3(x63=LG-&r4axC5dZ)H0000000000000eqlM^8=&!Qz9s4IT6a{&MV@&W(=5dZ)H0000000000000-5lMtgL8z3sq tbaMd!0LlUY01yBG00000000000002NlTM>O0&1O;jiV(7&Yu7P0050>#8&_S delta 4523 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
请解释一下“文言虚词”
-
氢气与氧气燃烧的方程式
+
氧化铁和硝酸的反应方程式
From 24e1f3f7f77f5ffc505d17759e22adb83007d5ab Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Mon, 30 Jun 2025 21:15:04 +0800 Subject: [PATCH 2/2] 'commit' --- .../Config/__pycache__/Config.cpython-310.pyc | Bin 702 -> 702 bytes dsRag/Start.py | 14 +++--- dsRag/static/ai.html | 2 +- dsRag/错误日志.txt | 47 ------------------ 4 files changed, 8 insertions(+), 55 deletions(-) delete mode 100644 dsRag/错误日志.txt diff --git a/dsRag/Config/__pycache__/Config.cpython-310.pyc b/dsRag/Config/__pycache__/Config.cpython-310.pyc index 27589a577437b50f3e231be2e95d4d63ec15b402..ae58a6e65f6cd1007a8df994471f607617fac803 100644 GIT binary patch delta 19 ZcmdnTx{sABpO=@50SFd#ZRFa*1OP6Y1i=6R delta 19 ZcmdnTx{sABpO=@50SKB}HgauY0st+%1e*W= diff --git a/dsRag/Start.py b/dsRag/Start.py index ca0b5094..55e0a9cc 100644 --- a/dsRag/Start.py +++ b/dsRag/Start.py @@ -134,13 +134,13 @@ async def rag(request: fastapi.Request): {context} 回答要求 - 1. 严格保持原文中图片与上下文的顺序关系,确保语义相关性 - 2. 图片引用使用Markdown格式: ![图片描述](图片路径) - 3. 使用Markdown格式返回,包含适当的标题、列表和代码块 - 4. 直接返回Markdown内容,不要包含额外解释或说明 - 5. 依托给定的资料,快速准确地回答问题,可以添加一些额外的信息,但请勿重复内容 - 6. 如果未提供相关信息,请不要回答 - 7. 如果发现相关信息与原来的问题契合度低,也不要回答 + 1. 请仔细甄别原问题与提供材料的关联性,不相关的材料必须忽略,绝对不要包含无关信息! + 2. 如果发现相关信息与原来的问题契合度低,请直接回答"未找到相关信息" + 3. 严格保持原文中图片与上下文的顺序关系,确保语义相关性 + 4. 使用Markdown格式返回,包含适当的标题、列表和代码块 + 5. 直接返回Markdown内容,不要包含额外解释或说明 + 6. 依托给定的资料,快速准确地回答问题 + 7. 如果未提供相关信息,请直接回答"未找到相关信息" 8. 确保内容结构清晰,便于前端展示 """ diff --git a/dsRag/static/ai.html b/dsRag/static/ai.html index ed84511f..d4d10697 100644 --- a/dsRag/static/ai.html +++ b/dsRag/static/ai.html @@ -220,7 +220,7 @@ 帮我写一下 “如何理解点、线、面、体、角”的教学设计
请解释一下“文言虚词”
-
氧化铁和硝酸的反应方程式
+
氧化铁和硝酸
diff --git a/dsRag/错误日志.txt b/dsRag/错误日志.txt deleted file mode 100644 index ecd3dedb..00000000 --- a/dsRag/错误日志.txt +++ /dev/null @@ -1,47 +0,0 @@ -2025-06-29 19:39:37,205 - __main__ - INFO - 正在调用阿里云大模型生成回答... -INFO: 127.0.0.1:63054 - "POST /api/rag_stream HTTP/1.1" 200 OK -ERROR: Exception in ASGI application -Traceback (most recent call last): - File "D:\anaconda3\envs\rag\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi - result = await app( # type: ignore[func-returns-value] - File "D:\anaconda3\envs\rag\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ - return await self.app(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\fastapi\applications.py", line 1054, in __call__ - await super().__call__(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\applications.py", line 112, in __call__ - await self.middleware_stack(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ - raise exc - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ - await self.app(scope, receive, _send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ - await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app - raise exc - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app - await app(scope, receive, sender) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\routing.py", line 714, in __call__ - await self.middleware_stack(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\routing.py", line 734, in app - await route.handle(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\routing.py", line 288, in handle - await self.app(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\routing.py", line 76, in app - await wrap_app_handling_exceptions(app, request)(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app - raise exc - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app - await app(scope, receive, sender) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\routing.py", line 74, in app - await response(scope, receive, send) - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\responses.py", line 263, in __call__ - async with anyio.create_task_group() as task_group: - File "D:\anaconda3\envs\rag\lib\site-packages\anyio\_backends\_asyncio.py", line 597, in __aexit__ - raise exceptions[0] - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\responses.py", line 266, in wrap - await func() - File "D:\anaconda3\envs\rag\lib\site-packages\starlette\responses.py", line 246, in stream_response - async for chunk in self.body_iterator: - File "D:\dsWork\dsProject\dsRag\Util\SearchUtil.py", line 171, in generate - async for chunk in aliyun_util.chat_stream(prompt): -AttributeError: 'ALiYunUtil' object has no attribute 'chat_stream' \ No newline at end of file