
pip install sentence-transformersimportchromadbimportre from chromadb.utilsimportembedding_functions #---------------------------------------------------------#1.初始化配置中文 Embedding 模型 #---------------------------------------------------------# 使用 SentenceTransformer 的多语言模型这是目前本地运行最简单的中文解决方案 chinese_efembedding_functions.SentenceTransformerEmbeddingFunction(model_nameparaphrase-multilingual-MiniLM-L12-v2)# 指向新的数据库路径避免旧模型数据干扰 clientchromadb.PersistentClient(path./enterprise_knowledge_base_v2)# 创建或获取集合并【显式指定】使用中文模型 collectionclient.get_or_create_collection(namecompany_manual_v2,embedding_functionchinese_ef,# 关键点换上中文大脑 metadata{hnsw:space:cosine})#---------------------------------------------------------#2.构造超长文档 #---------------------------------------------------------raw_document 【第一章入职与试用期】 欢迎加入本公司。新员工入职首日需提供体检报告及原单位离职证明。 试用期通常为三个月期间表现优异者可申请提前转正。转正评估由直属主管发起。 【第二章考勤与休假制度】1.工作时间周一至周五9:00-18:00午休1小时。2.迟到规定每月前3次迟到在15分钟内不扣款超过3次按分钟扣除全勤奖。3.带薪年假员工入职满一年后享有10天带薪年假随工龄每增加一年增加1天。4.病假申请需提供二级以上医院开具的假条。 【第三章薪酬与奖金】1.发薪日每月15日通过银行转账发放上月薪资。2.绩效奖金根据每季度OKRs达成情况在季度末月随工资发放。3.五险一金按国家规定最高比例缴纳。 【第四章报销管理规范】1.交通报销加班至22:00后回程打车费用可全额报销需提供正规发票。2.差旅补贴出差期间每日享有150元餐补。3.审批流程所有报销需在次月5日前在OA系统提交经财务审核后支付。 【第五章办公环境与设备】1.办公电脑公司为每位员工配发高性能电脑离职时需归还。2.饮用水与零食茶水间无限量供应咖啡、茶包和各类零食。3.会议室预订请提前在飞书日历中预订会议室会议结束后请擦拭白板。 #---------------------------------------------------------#3.智能切片逻辑(保持不变)#---------------------------------------------------------defsmart_split(text,chunk_size80,overlap15):paragraphstext.split(\n)chunks[]current_chunkforparainparagraphs:ifnot para.strip():continueiflen(current_chunk)len(para)chunk_size:current_chunkpara else:chunks.append(current_chunk.strip())current_chunkcurrent_chunk[-(overlap):]para ifcurrent_chunk:chunks.append(current_chunk.strip())return[cforcinchunksiflen(c)5]#---------------------------------------------------------#4.自动化录入 #---------------------------------------------------------print(1. 启动中文文档解析引擎...)chunkssmart_split(raw_document)doc_name2025年度员工手册.txtids[fman_2025_{i}foriinrange(len(chunks))]metadatas[]fori,cinenumerate(chunks):chapter_matchre.search(r【(.*?)】,c)metadatas.append({source:doc_name,chapter:chapter_match.group(1)ifchapter_matchelse内容续前页,index:i})collection.upsert(idsids,documentschunks,metadatasmetadatas)print(f [成功] 已录入 {len(chunks)} 个语义块。)#---------------------------------------------------------#5.搜索功能(结果解析优化)#---------------------------------------------------------defquick_search(query):print(f\n 提问: {query})resultscollection.query(query_texts[query],n_results2# 取最准的那一个)# 打印结果 distresults[distances][0][0]metaresults[metadatas][0][0]contentresults[documents][0][0]print(f 找到最匹配内容 (距离得分: {dist:.4f}):)print(f 所属章节: {meta[chapter]})print(f 原文回显: {content})# 现在测试你的原文搜索 #quick_search(每月15日通过银行转账发放上月薪资。)# 测试模糊语义搜索quick_search(如何报销)#quick_search(什么时候发工资)