From e2a89137789f3a66fcc9f3404a428c22603391cc Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Thu, 26 Jun 2025 14:51:21 +0800 Subject: [PATCH] 'commit' --- dsRag/Dao/KbDao.py | 110 --------------- dsRag/Dao/__pycache__/KbDao.cpython-310.pyc | Bin 5097 -> 0 bytes .../4、Elasticsearch安装配置文档.md | 132 ------------------ ...Milvus.md => 4、向量数据库Milvus.md} | 0 dsRag/Model/KbModel.py | 55 -------- .../Model/__pycache__/KbModel.cpython-310.pyc | Bin 768 -> 0 bytes dsRag/Sql/t_ai_kb.sql | 61 -------- 7 files changed, 358 deletions(-) delete mode 100644 dsRag/Dao/KbDao.py delete mode 100644 dsRag/Dao/__pycache__/KbDao.cpython-310.pyc delete mode 100644 dsRag/Doc/4、Elasticsearch安装配置文档.md rename dsRag/Doc/{24、向量数据库Milvus.md => 4、向量数据库Milvus.md} (100%) delete mode 100644 dsRag/Model/KbModel.py delete mode 100644 dsRag/Model/__pycache__/KbModel.cpython-310.pyc delete mode 100644 dsRag/Sql/t_ai_kb.sql diff --git a/dsRag/Dao/KbDao.py b/dsRag/Dao/KbDao.py deleted file mode 100644 index 6fb3e6b4..00000000 --- a/dsRag/Dao/KbDao.py +++ /dev/null @@ -1,110 +0,0 @@ -import logging -from typing import Optional, List, Dict -from aiomysql import DictCursor - -class KbDao: - def __init__(self, mysql_pool): - self.mysql_pool = mysql_pool - self.logger = logging.getLogger(__name__) - - async def create_kb(self, kb: Dict) -> int: - async with self.mysql_pool.acquire() as conn: - async with conn.cursor(DictCursor) as cur: - await cur.execute( - "INSERT INTO t_ai_kb(kb_name, short_name) VALUES(%s, %s)", - (kb['name'], kb.get('description', ''))) - await conn.commit() - return cur.lastrowid - - async def get_kb(self, kb_id: int) -> Optional[Dict]: - """获取知识库详情""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor(DictCursor) as cur: - await cur.execute( - "SELECT * FROM t_ai_kb WHERE id = %s", (kb_id,)) - return await cur.fetchone() - - async def update_kb(self, kb_id: int, kb: Dict) -> bool: - """更新知识库信息""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor() as cur: - await cur.execute( - "UPDATE t_ai_kb SET name = %s, description = %s WHERE id = %s", - (kb['name'], kb['description'], kb_id)) - await conn.commit() - return cur.rowcount > 0 - - async def delete_kb(self, kb_id: int) -> bool: - """删除知识库""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor() as cur: - await cur.execute( - "DELETE FROM t_ai_kb WHERE id = %s", (kb_id,)) - await conn.commit() - return cur.rowcount > 0 - - async def create_kb_file(self, file: Dict) -> int: - """创建知识库文件记录""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor(DictCursor) as cur: - await cur.execute( - """INSERT INTO t_ai_kb_files - (kb_id, file_name, file_path, file_size, file_type, state) - VALUES(%s, %s, %s, %s, %s, %s)""", - (file['kb_id'], file['file_name'], file['file_path'], - file['file_size'], file['file_type'], file['state'])) - await conn.commit() - return cur.lastrowid - - async def get_kb_file(self, file_id: int) -> Optional[Dict]: - """获取文件详情""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor(DictCursor) as cur: - await cur.execute( - "SELECT * FROM t_ai_kb_files WHERE id = %s", (file_id,)) - return await cur.fetchone() - - async def update_kb_file(self, file_id: int, file: Dict) -> bool: - """更新文件信息""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor() as cur: - await cur.execute( - """UPDATE t_ai_kb_files SET - kb_id = %s, file_name = %s, file_path = %s, - file_size = %s, file_type = %s, state = %s - WHERE id = %s""", - (file['kb_id'], file['file_name'], file['file_path'], - file['file_size'], file['file_type'], file['state'], file_id)) - await conn.commit() - return cur.rowcount > 0 - - async def delete_kb_file(self, file_id: int) -> bool: - """删除文件记录""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor() as cur: - await cur.execute( - "DELETE FROM t_ai_kb_files WHERE id = %s", (file_id,)) - await conn.commit() - return cur.rowcount > 0 - - async def handle_upload(self, kb_id: int, file) -> Dict: - """处理文件上传""" - # 文件保存逻辑 - # 数据库记录创建 - # 返回文件信息 - pass - - async def get_unprocessed_files(self) -> List[Dict]: - """获取未处理文件列表""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor(DictCursor) as cur: - await cur.execute( - "SELECT * FROM t_ai_kb_files WHERE state = 0") - return await cur.fetchall() - - async def list_kbs(self) -> List[Dict]: - """获取所有知识库列表""" - async with self.mysql_pool.acquire() as conn: - async with conn.cursor(DictCursor) as cur: - await cur.execute("SELECT * FROM t_ai_kb") - return await cur.fetchall() \ No newline at end of file diff --git a/dsRag/Dao/__pycache__/KbDao.cpython-310.pyc b/dsRag/Dao/__pycache__/KbDao.cpython-310.pyc deleted file mode 100644 index b059fd825ed7339e11cc4592438e844f8d08e278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5097 zcmbVQ-ESP#6`yx*}P_dS1MR;gp@C8l1YMvjq5sj7Vr^`%->_Vp8sp5?R~wyzwwT+dg= zt)^EcegV%%JKS}66JwKy1{X)*@BSN%DH()G24#fN%aS28*;JTfsx$CRrd?JHjpa-g zJULU@C4pCGdGPAO8^q>kG*)0+z*`7o^AI=0hQYIi7321{vJvnMv2CgLN^CoLhlMwY z#rDc<2Y8ENEVehw?gG!&@CgcdcCuaI8G*iS6MduXZnhgdrG)1mb}x9gv-@Dw?)TLn zPLDU7CWZHo4lE-qN8#^|f>|OMO2k&+r_yd`;rRaQffg@xy1Bd)na(a5~AI zd9&$3=~QF(4D{}d=;MLKbJ&{Iw!C^B0do~F8W|zoVh|AB^y$L1uW{4s@OJ9WumVoU zzhmuxfVl{7GcWbXvh=ug45ru%((g{5r%N<=)7W?Lyu2j$6h@X{O6-F1=&4L*$}*jy z%QUD*B&ek=hpoVsJfAx)QD{?v-z7PU%JNN0hr)X9i?0(R;qOQAKRr+z$32dHEg35i zQET0&j@2e7PEA#g)uv8Vyn4f`FHG-Sm=++6Ropp;d!k&ey!zbnS0*O+?QzE{d)%t8 zAWZ%iX1Yyo2?qI6RTn7vxkmGB$Ks~1H3fgT3S;Nz%paT0j%WHZzzw&YR?G7Iyxnj; z?!0cXs=|jLj*nol(sbHwUxxYu@xT=EPQJ;_hG#-Q5gPYyF!Vy1l!-zpDUrfgMOh)` zFGg?gBnNJHw+2whb$k_G&SD$FeCr0Z*9S8Jn4j;18GU<0nCTLkAp%(NB9uK<01HUe^|Tz#>$Of ztzG})>ZPC5x(`lH9G^HkRe7ZH{HYT!MQ~S6zc6uXqGGYiGl1+hO<>5e8IEig;PJbl zWau-d*PL_O=Cu&2`|$p5H20uEZYGe@0B3*+(ztXBTLPFU!laSH?IBwJe+bb~08tR! z#7q($IBo94KNtewA99U`j6~0&^U9LalNs=m$-q9!AngJ~atb0Pf(QUp=2fOHC|ST{ z`4Ry1^Y2bzrTHgBNPxBa)`zQCKZwD)`M2fOi`Q%2r(Zca{@m0=jMC)9R0TOFP#UWw zh$lR06nP1Tj^oI40%j0Y#FOs=W9UG>rqgMARW;zB02N8NF|zs2A`3W(;71&!CBeZF z!9jh1gK?dW$@eL=mO;K31M(#>-Y-x`jMLPky(F$O;3|J3T*s5d+JuBgGFFgK>1>4; zS-H~t{I~DMxYoK4j061u(T&L`z~T?#*gt@#k5GAL+NMZ-d*JS^onVktIPA!&B85T! zGM)J18on}P+2+8|W5yNo_D?8e484(&_YSY;JwY%M5R9ovGo}ff6IO@yj+USuUC)d{ z^0X{^W%&}6n@SG%CeX|$V+Az%4$jz>D{rlQd?SWt_3BS=e*DqepFUXm>#u9w-)Bf- z9S6^?6e<}9%B97|Di{*#rYJ5pyt&ZpT3s_Ndgm6Q=z2h(YIb`mp+&Jx{;M46>F48z zg++W=Sj2~gMSPgA1`o?^nAb%f;3%Y#1XrQFG5d?Lnu=jL0KqQyD$4I5!*Yqx+l4QS z8c6Yf!x>rblVVZX&xtp=gCg_$v14)vGg_c)AzY!TRWn5`1S}PiF??>X}TrqJm9Su!%Bc6J@|ANO!pepJ0*M zCu8|Yea;8C_-@W|VFW(3!(qDdd^OIgpJi96<)+b_| z`+77y*Jv}y!JS3hX)puY6fc*!Hy$8GLf)PGAS7(@uMlJ5AGdO%_bI284?b2J6C++8FF! zPqzbgH^h!V39W)$Bu3%Q3#)Ix8H;^13Oh1Kfj@=s@Le>0vrD((>kw>bTnoF6Y7}&P zgbb1LS0PiwFAGsk#T|kUZfFP0%Cp4D70*H!Med$O$%w*mBk*ef{a+ Rt)E4vx!9sEm0`R}^lKJIdyfDB diff --git a/dsRag/Doc/4、Elasticsearch安装配置文档.md b/dsRag/Doc/4、Elasticsearch安装配置文档.md deleted file mode 100644 index cac6d013..00000000 --- a/dsRag/Doc/4、Elasticsearch安装配置文档.md +++ /dev/null @@ -1,132 +0,0 @@ -### 一、安装 $ES$ - -**1、下载安装包** - -进入官网下载$linux$安装包 [下载地址](https://www.elastic.co/cn/downloads/elasticsearch) - -![img](https://i-blog.csdnimg.cn/direct/04ae4c7f65fe475fb19e913eaf80ba04.png) - -**2、安装$JDK$$21$** - -```sh -sudo yum install java-21-openjdk-devel -echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk -export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc - -source ~/.bashrc -``` - -**3、上传文件到$linux$服务器** - -```sh -# 如果没有 rz 命令 先安装 -yum -y install lrzsz - -# rz 打开弹窗 选择下载好的文件 确认 在哪个目录下执行,就会上传到该目录下 -rz -be -``` - - **4、新建用户并设置密码** - -```sh -# 创建用户 -useradd elauser - -# 设置密码 符合密码规范 大写 + 小写 + 数字 + 特殊字符 + 大于八位 -passwd elauser - -#输入密码: -DsideaL@123 - -tar -zxvf elasticsearch-9.0.2-linux-x86_64.tar.gz -sudo chown -R elauser:elauser /usr/local/elasticsearch-9.0.2 -# 进入解压文件并编辑配置文件 -cd elasticsearch-9.0.2/config -vi elasticsearch.yml -# 修改数据目录和日志目录 -mkdir -p /usr/local/elasticsearch-9.0.2/data -mkdir -p /usr/local/elasticsearch-9.0.2/logs -``` - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623130022571.png) - -设置允许所有IP进行访问,在添加下面参数让$elasticsearch-head$插件可以访问$es$ - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623130217136.png) - -```yaml -network.host: 0.0.0.0 -http.cors.enabled: true -http.cors.allow-origin: "*" -``` - -**5、修改系统配置** - -```sh -# m.max_map_count 值太低 -# 临时解决方案(需要root权限) -sudo sysctl -w vm.max_map_count=262144 - -# 永久解决方案(需要root权限) -echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf -sudo sysctl -p - -# 验证是否有效 -sysctl vm.max_map_count -``` - -**6、启动** - -```sh -# 启动 -su - elauser - -cd /usr/local/elasticsearch-9.0.2/bin -# ./elasticsearch-keystore create - -# 启动 -d = damon 守护进程 -./elasticsearch -d - - -# 访问地址 -https://10.10.14.206:9200 - -# 日志文件 -/usr/local/elasticsearch-9.0.2/logs/elasticsearch.log -``` - - 弹出输入账号密码,这里需要重置下密码,再登录 进入安装目录的bin目录下 - -执行下面命令 就会在控制台打印出新密码 账号就是 elastic - -``` -./elasticsearch-reset-password -u elastic -``` - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623132315148.png) - -登录成功,完活。 - -```sh -elastic -jv9h8uwRrRxmDi1dq6u8 -``` - - - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623132417828.png) - -> **注意**:如果访问不到,请检查是否开启了$VPN$ - -### 二、安装$ik$中文分词插件 - -```bash -# 安装分词插件 -./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/9.0.2 - -# 检查插件列表 -[elauser@maxkb elasticsearch-9.0.2]$ ./bin/elasticsearch-plugin list -analysis-ik -``` - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/{year}/{month}/{md5}.{extName}/20250623133924355.png) diff --git a/dsRag/Doc/24、向量数据库Milvus.md b/dsRag/Doc/4、向量数据库Milvus.md similarity index 100% rename from dsRag/Doc/24、向量数据库Milvus.md rename to dsRag/Doc/4、向量数据库Milvus.md diff --git a/dsRag/Model/KbModel.py b/dsRag/Model/KbModel.py deleted file mode 100644 index bb735d76..00000000 --- a/dsRag/Model/KbModel.py +++ /dev/null @@ -1,55 +0,0 @@ -from pydantic import BaseModel -from typing import Optional -from datetime import datetime - -class KbBase(BaseModel): - name: str - description: Optional[str] = None - -class KbCreate(KbBase): - pass - -class KbUpdate(KbBase): - pass - -class Kb(KbBase): - id: int - create_time: datetime - update_time: datetime - - class Config: - orm_mode = True - -class KbFileBase(BaseModel): - kb_id: int - file_name: str - file_path: str - file_size: int - file_type: str - state: int = 0 - -class KbFileCreate(KbFileBase): - pass - -class KbFileUpdate(KbFileBase): - pass - -class KbFile(KbFileBase): - id: int - create_time: datetime - update_time: datetime - - class Config: - orm_mode = True - -class KbModel(BaseModel): - kb_name: str - short_name: str - is_delete: Optional[int] = 0 - -class KbFileModel(BaseModel): - file_name: str - ext_name: str - kb_id: int - is_delete: Optional[int] = 0 - state: Optional[int] = 0 \ No newline at end of file diff --git a/dsRag/Model/__pycache__/KbModel.cpython-310.pyc b/dsRag/Model/__pycache__/KbModel.cpython-310.pyc deleted file mode 100644 index dfca195d348bc397deb2b44ff240952e37bbc307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmZ{i!A{&T5QfKboH)yF*~4D?2+M(cs}(}1q6bu{s4AprB`dpjAtjq^Z6mSgBCb3K zujDJIz5=JtIB3NIEcws;4Gx!Rc>+}wEYS>?1rs##v&}Y#Lo&SKT{D(Whl!fA`a^_p7O@l_Bt$p3KRkNhk z*Mp-u#Od}?43tbmnfwI9O{&?feicMnKqMTIq$L6}A|eve%dOAQ$M%Gslf`k}^qmRCFARHd(%kmgf*TR?rZOSv%$eedY2{`!)Q2?4E~VoT+E pqpQ}}OPgROWPY=*+sjBkVu~-mwRe!SzM%)y_sDk$LpDw(;y