[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-bohanli--BERT-flow":3,"tool-bohanli--BERT-flow":61},[4,18,28,36,45,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":24,"last_commit_at":42,"category_tags":43,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,44],"语言模型",{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":24,"last_commit_at":59,"category_tags":60,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[27,13,15,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":76,"owner_location":77,"owner_email":76,"owner_twitter":76,"owner_website":76,"owner_url":78,"languages":79,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":92,"env_os":93,"env_gpu":94,"env_ram":93,"env_deps":95,"category_tags":100,"github_topics":76,"view_count":24,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":101,"updated_at":102,"faqs":103,"releases":134},9888,"bohanli\u002FBERT-flow","BERT-flow","TensorFlow implementation of On the Sentence Embeddings from Pre-trained Language Models (EMNLP 2020)","BERT-flow 是一个基于 TensorFlow 实现的开源项目，旨在优化预训练语言模型（如 BERT）生成的句子向量质量。它源自 EMNLP 2020 的研究论文，核心目标是解决直接使用 BERT 输出作为句子嵌入时，向量空间分布不均匀、各向异性严重的问题，从而导致在语义相似度计算等任务中表现不佳。\n\n该工具引入了一种独特的“流模型”（Flow-based generative models）技术，通过无监督学习的方式，将 BERT 原本杂乱的向量空间映射为平滑、各向同性的高斯分布。这种变换无需额外的标注数据，即可显著提升句子向量在语义文本相似度（STS）任务中的性能。实验数据显示，经过 BERT-flow 处理后，模型在标准评测集上的相关系数可从约 78% 提升至 81% 以上，效果优于传统的平均池化或微调方法。\n\nBERT-flow 非常适合自然语言处理领域的研究人员和开发者使用，特别是那些需要高质量句子向量用于语义搜索、聚类分析或下游分类任务的团队。虽然项目提供了完整的训练与评估脚本，但使用者需具备一定的深度学习基础，熟悉 TensorFlow 环境配置及命令行操作。对于希","BERT-flow 是一个基于 TensorFlow 实现的开源项目，旨在优化预训练语言模型（如 BERT）生成的句子向量质量。它源自 EMNLP 2020 的研究论文，核心目标是解决直接使用 BERT 输出作为句子嵌入时，向量空间分布不均匀、各向异性严重的问题，从而导致在语义相似度计算等任务中表现不佳。\n\n该工具引入了一种独特的“流模型”（Flow-based generative models）技术，通过无监督学习的方式，将 BERT 原本杂乱的向量空间映射为平滑、各向同性的高斯分布。这种变换无需额外的标注数据，即可显著提升句子向量在语义文本相似度（STS）任务中的性能。实验数据显示，经过 BERT-flow 处理后，模型在标准评测集上的相关系数可从约 78% 提升至 81% 以上，效果优于传统的平均池化或微调方法。\n\nBERT-flow 非常适合自然语言处理领域的研究人员和开发者使用，特别是那些需要高质量句子向量用于语义搜索、聚类分析或下游分类任务的团队。虽然项目提供了完整的训练与评估脚本，但使用者需具备一定的深度学习基础，熟悉 TensorFlow 环境配置及命令行操作。对于希望深入探索句子表示学习前沿技术，或需要在现有 BERT 架构基础上进一步挖掘性能潜力的专业人士来说，这是一个极具参考价值的实现方案。","# On the Sentence Embeddings from Pre-trained Language Models\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbohanli_BERT-flow_readme_1bfcc5a1c24f.png\" width=\"450\">\n\u003C\u002Fp>\n\nThis is a TensorFlow implementation of the following [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2011.05864):\n\n```\nOn the Sentence Embeddings from Pre-trained Language Models\nBohan Li, Hao Zhou, Junxian He, Mingxuan Wang, Yiming Yang, Lei Li\nEMNLP 2020\n```\n\n\n\nModel                                        | Spearman's rho \n-------------------------------------------- | :-------------: \nBERT-large-NLI                               | 77.80    \nBERT-large-NLI-last2avg                      | 78.45   \nBERT-large-NLI-flow (target, train only)     | 80.54 \nBERT-large-NLI-flow (target, train+dev+test) | 81.18    \n  \n\nPlease contact bohanl1@cs.cmu.edu if you have any questions.\n\n\n## Requirements\n\n* Python >= 3.6\n* TensorFlow >= 1.14\n\n## Preparation\n\n### Pretrained BERT models\n```bash\nexport BERT_PREMODELS=\"..\u002Fbert_premodels\"\nmkdir ${BERT_PREMODELS}; cd ${BERT_PREMODELS}\n\n# then download the pre-trained BERT models from https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert\ncurl -O https:\u002F\u002Fstorage.googleapis.com\u002Fbert_models\u002F2018_10_18\u002Funcased_L-12_H-768_A-12.zip\ncurl -O https:\u002F\u002Fstorage.googleapis.com\u002Fbert_models\u002F2018_10_18\u002Funcased_L-24_H-1024_A-16.zip\n\nls ${BERT_PREMODELS}\u002Funcased_L-12_H-768_A-12 # base\nls ${BERT_PREMODELS}\u002Funcased_L-24_H-1024_A-16 # large\n```\n\n### GLUE\n```bash\nexport GLUE_DIR=\"..\u002Fglue_data\"\npython download_glue_data.py --data_dir=${GLUE_DIR}\n\n# then download the labeled test set of STS-B\ncd ..\u002Fglue_data\u002FSTS-B\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fkawine\u002Fusif\u002Fmaster\u002FSTSBenchmark\u002Fsts-test.csv\n```\n\n### SentEval\n```bash\ncd ..\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FSentEval\n```\n\n## Usage\n\n### Fine-tune BERT with NLI supervision (optional)\n```bash\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nmkdir ${CACHED_DIR}\n\nexport RANDOM_SEED=1234\nexport CUDA_VISIBLE_DEVICES=0\nexport BERT_NAME=\"large\"\nexport TASK_NAME=\"ALLNLI\"\nunset INIT_CKPT\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name=exp_${BERT_NAME}_${RANDOM_SEED} \\\n--num_train_epochs=1.0 \\\n--learning_rate=2e-5 \\\n--train_batch_size=16 \\\n--cached_dir=${CACHED_DIR}\"\n\n\n# evaluation\nexport RANDOM_SEED=1234\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_${BERT_NAME}_${RANDOM_SEED}\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nexport EXP_NAME=exp_${BERT_NAME}_${RANDOM_SEED}_eval\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg \\\n --flow=0 --flow_loss=0 \\\n --num_examples=0 \\\n --num_train_epochs=1e-10\"\n```\n\nNote: You may want to add `--use_xla` to speed up the BERT fine-tuning.\n\n### Unsupervised learning of flow-based generative models\n```bash\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name_prefix=exp \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n\n# evaluation\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nexport EXP_NAME=exp_t_STS-B_ep_1.00_lr_5.00e-05_e_avg-last-2_f_11_1.00e-03_allsplits\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n```\n\n### Fit flow with only the training set of STS-B\n```bash\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name_prefix=exp \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=0\"\n\n# evaluation\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nexport EXP_NAME=exp_t_STS-B_ep_1.00_lr_5.00e-05_e_avg-last-2_f_11_1.00e-03\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n```\n\n## Download our models\nOur models are available at https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1-vO47t5SPFfzZPKkkhSe4tXhn8u--KLR\u002Fview?usp=sharing\n\n## Reference\n\n```\n@inproceedings{li2020emnlp,\n    title = {On the Sentence Embeddings from Pre-trained Language Models},\n    author = {Bohan Li and Hao Zhou and Junxian He and Mingxuan Wang and Yiming Yang and Lei Li},\n    booktitle = {Conference on Empirical Methods in Natural Language Processing (EMNLP)},\n    month = {November},\n    year = {2020}\n}\n\n```\n\n## Acknowledgements\n\nA large portion of this repo is borrowed from the following projects:\n- https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert\n- https:\u002F\u002Fgithub.com\u002Fzihangdai\u002Fxlnet\n- https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftensor2tensor\n\n\n","# 关于预训练语言模型的句子嵌入\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbohanli_BERT-flow_readme_1bfcc5a1c24f.png\" width=\"450\">\n\u003C\u002Fp>\n\n这是对以下论文的 TensorFlow 实现：\n\n```\n关于预训练语言模型的句子嵌入\n李博涵、周浩、何俊贤、王明轩、杨一鸣、李磊\nEMNLP 2020\n```\n\n\n\n模型                                        | 斯皮尔曼等级相关系数 \n-------------------------------------------- | :-------------: \nBERT-large-NLI                               | 77.80    \nBERT-large-NLI-last2avg                      | 78.45   \nBERT-large-NLI-flow（仅目标训练）     | 80.54 \nBERT-large-NLI-flow（目标及训练\u002F验证\u002F测试集共同训练） | 81.18    \n  \n\n如有任何问题，请联系 bohanl1@cs.cmu.edu。\n\n\n## 需求\n\n* Python >= 3.6\n* TensorFlow >= 1.14\n\n## 准备工作\n\n### 预训练 BERT 模型\n```bash\nexport BERT_PREMODELS=\"..\u002Fbert_premodels\"\nmkdir ${BERT_PREMODELS}; cd ${BERT_PREMODELS}\n\n# 然后从 https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert 下载预训练的 BERT 模型\ncurl -O https:\u002F\u002Fstorage.googleapis.com\u002Fbert_models\u002F2018_10_18\u002Funcased_L-12_H-768_A-12.zip\ncurl -O https:\u002F\u002Fstorage.googleapis.com\u002Fbert_models\u002F2018_10_18\u002Funcased_L-24_H-1024_A-16.zip\n\nls ${BERT_PREMODELS}\u002Funcased_L-12_H-768_A-12 # base\nls ${BERT_PREMODELS}\u002Funcased_L-24_H-1024_A-16 # large\n```\n\n### GLUE\n```bash\nexport GLUE_DIR=\"..\u002Fglue_data\"\npython download_glue_data.py --data_dir=${GLUE_DIR}\n\n# 然后下载 STS-B 的标注测试集\ncd ..\u002Fglue_data\u002FSTS-B\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fkawine\u002Fusif\u002Fmaster\u002FSTSBenchmark\u002Fsts-test.csv\n```\n\n### SentEval\n```bash\ncd ..\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FSentEval\n```\n\n## 使用方法\n\n### 在 NLI 监督下微调 BERT（可选）\n```bash\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nmkdir ${CACHED_DIR}\n\nexport RANDOM_SEED=1234\nexport CUDA_VISIBLE_DEVICES=0\nexport BERT_NAME=\"large\"\nexport TASK_NAME=\"ALLNLI\"\nunset INIT_CKPT\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name=exp_${BERT_NAME}_${RANDOM_SEED} \\\n--num_train_epochs=1.0 \\\n--learning_rate=2e-5 \\\n--train_batch_size=16 \\\n--cached_dir=${CACHED_DIR}\"\n\n\n# 评估\nexport RANDOM_SEED=1234\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_${BERT_NAME}_${RANDOM_SEED}\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nexport EXP_NAME=exp_${BERT_NAME}_${RANDOM_SEED}_eval\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg \\\n --flow=0 --flow_loss=0 \\\n --num_examples=0 \\\n --num_train_epochs=1e-10\"\n```\n\n注意：您可能希望添加 `--use_xla` 以加快 BERT 微调的速度。\n\n### 无监督学习基于流的生成模型\n```bash\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name_prefix=exp \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n\n# 评估\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nexport EXP_NAME=exp_t_STS-B_ep_1.00_lr_5.00e-05_e_avg-last-2_f_11_1.00e-03_allsplits\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n```\n\n### 仅使用 STS-B 的训练集拟合流模型\n```bash\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name_prefix=exp \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=0\"\n\n# 评估\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nexport EXP_NAME=exp_t_STS-B_ep_1.00_lr_5.00e-05_e_avg-last-2_f_11_1.00e-03\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning rate=1e-3 \\\n --use_full for training=1\"\n```\n\n## 下载我们的模型\n我们的模型可在以下链接获取：https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1-vO47t5SPFfzZPKkkhSe4tXhn8u--KLR\u002Fview?usp=sharing\n\n## 参考文献\n\n```\n@inproceedings{li2020emnlp,\n    title = {关于预训练语言模型的句子嵌入},\n    author = {李博涵、周浩、何俊贤、王明轩、杨一鸣、李磊},\n    booktitle = {自然语言处理中的经验方法会议（EMNLP）},\n    month = {十一月},\n    year = {2020}\n}\n\n```\n\n## 致谢\n\n本仓库的大部分内容借鉴自以下项目：\n- https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert\n- https:\u002F\u002Fgithub.com\u002Fzihangdai\u002Fxlnet\n- https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftensor2tensor","# BERT-flow 快速上手指南\n\nBERT-flow 是一种基于预训练语言模型（如 BERT）生成高质量句子嵌入的方法。它通过引入流式生成模型（Flow-based Generative Models），将 BERT 输出的各向异性分布映射为各向同性的高斯分布，从而显著提升句子语义相似度任务的表现。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux (推荐) 或 macOS\n*   **Python**: >= 3.6\n*   **深度学习框架**: TensorFlow >= 1.14 (注意：本项目基于 TF 1.x，非 TF 2.x)\n*   **GPU**: 可选，但强烈建议使用 CUDA 加速训练过程\n\n## 安装与数据准备\n\n### 1. 克隆项目与依赖\n首先获取代码库，并安装必要的 Python 依赖（假设项目根目录下有 `requirements.txt`，若无则需手动安装 tensorflow 等）。\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow.git\ncd BERT-flow\n# 根据实际需求安装依赖，例如：\npip install tensorflow-gpu==1.15.0\n```\n\n### 2. 下载预训练 BERT 模型\n从 Google 官方源下载预训练模型。国内用户若下载缓慢，可尝试使用国内镜像站或手动下载后上传至服务器。\n\n```bash\nexport BERT_PREMODELS=\"..\u002Fbert_premodels\"\nmkdir -p ${BERT_PREMODELS}\ncd ${BERT_PREMODELS}\n\n# 下载 Base 和 Large 模型\ncurl -O https:\u002F\u002Fstorage.googleapis.com\u002Fbert_models\u002F2018_10_18\u002Funcased_L-12_H-768_A-12.zip\ncurl -O https:\u002F\u002Fstorage.googleapis.com\u002Fbert_models\u002F2018_10_18\u002Funcased_L-24_H-1024_A-16.zip\n\n# 解压\nunzip uncased_L-12_H-768_A-12.zip\nunzip uncased_L-24_H-1024_A-16.zip\n```\n\n### 3. 准备评测数据集 (GLUE & STS-B)\n下载 GLUE 基准数据集及 STS-B 的测试集标签。\n\n```bash\ncd ..\nexport GLUE_DIR=\"..\u002Fglue_data\"\npython download_glue_data.py --data_dir=${GLUE_DIR}\n\n# 下载 STS-B 标注测试集\ncd ..\u002Fglue_data\u002FSTS-B\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fkawine\u002Fusif\u002Fmaster\u002FSTSBenchmark\u002Fsts-test.csv\n```\n\n### 4. 准备 SentEval 工具\n用于后续的句子嵌入质量评估。\n\n```bash\ncd ..\u002F..\u002F..\ngit clone https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002FSentEval\n```\n\n## 基本使用\n\n以下是使用 BERT-flow 的核心流程：先微调 BERT（可选），然后训练流模型，最后进行评估。\n\n### 步骤 1: 微调 BERT (可选)\n如果您希望先在 NLI 数据上微调 BERT 以获得更好的初始表示，可运行以下命令。若直接使用原始 BERT，可跳过此步并使用官方提供的预训练检查点。\n\n```bash\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\nmkdir -p ${CACHED_DIR}\n\nexport RANDOM_SEED=1234\nexport CUDA_VISIBLE_DEVICES=0\nexport BERT_NAME=\"large\"\nexport TASK_NAME=\"ALLNLI\"\nunset INIT_CKPT\n\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name=exp_${BERT_NAME}_${RANDOM_SEED} \\\n--num_train_epochs=1.0 \\\n--learning_rate=2e-5 \\\n--train_batch_size=16 \\\n--cached_dir=${CACHED_DIR}\"\n```\n> **提示**: 添加 `--use_xla` 参数可以加速 BERT 的微调过程。\n\n### 步骤 2: 训练流模型 (核心步骤)\n这是 BERT-flow 的关键步骤，它将 BERT 的输出分布转换为高斯分布。以下示例使用 STS-B 数据进行无监督学习。\n\n```bash\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\n# 指向步骤 1 生成的模型，或直接使用下载的预训练 BERT 模型路径\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\n\nbash scripts\u002Ftrain_siamese.sh train \\\n\"--exp_name_prefix=exp \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n```\n\n**关键参数说明：**\n*   `--flow=1 --flow_loss=1`: 启用流模型训练。\n*   `--sentence_embedding_type=avg-last-2`: 推荐使用最后两层的平均池化。\n*   `--use_full_for_training=1`: 使用所有可用数据（train+dev+test）进行流模型拟合，通常能获得最佳效果（见论文结果 81.18）。若仅需训练集，设为 `0`。\n\n### 步骤 3: 评估模型\n训练完成后，使用以下命令在 STS-B 任务上评估性能（计算 Spearman 相关系数）。\n\n```bash\nexport CUDA_VISIBLE_DEVICES=0\nexport TASK_NAME=STS-B\nexport BERT_NAME=large\nexport OUTPUT_PARENT_DIR=\"..\u002Fexp\"\nexport INIT_CKPT=${OUTPUT_PARENT_DIR}\u002Fexp_large_1234\u002Fmodel.ckpt-60108\nexport CACHED_DIR=${OUTPUT_PARENT_DIR}\u002Fcached_data\n# 替换为您实际训练生成的实验名称\nexport EXP_NAME=exp_t_STS-B_ep_1.00_lr_5.00e-05_e_avg-last-2_f_11_1.00e-03_allsplits\n\nbash scripts\u002Ftrain_siamese.sh predict \\\n\"--exp_name=${EXP_NAME} \\\n --cached_dir=${CACHED_DIR} \\\n --sentence_embedding_type=avg-last-2 \\\n --flow=1 --flow_loss=1 \\\n --num_examples=0 \\\n --num_train_epochs=1.0 \\\n --flow_learning_rate=1e-3 \\\n --use_full_for_training=1\"\n```\n\n### 直接使用预训练模型\n如果您不想重新训练，可以直接下载作者提供的已训练好的模型进行检查和测试：\n*   下载地址：[Google Drive Link](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1-vO47t5SPFfzZPKkkhSe4tXhn8u--KLR\u002Fview?usp=sharing)\n\n下载后，将 `INIT_CKPT` 环境变量指向解压后的模型文件路径，然后直接运行**步骤 3**中的评估命令即可。","某电商平台的算法团队正在构建智能客服系统，需要从海量用户咨询日志中快速检索语义相似的过往案例以辅助人工回复。\n\n### 没有 BERT-flow 时\n- **语义匹配精度低**：直接使用预训练 BERT 生成的句子向量分布不均匀且存在各向异性，导致“怎么退货”和“退款流程”这类语义高度相近的句子在向量空间中距离较远，召回率不足。\n- **过度依赖标注数据**：为了提升效果，团队不得不花费数周时间人工标注成千上万条问答对进行微调，成本高昂且难以覆盖长尾场景。\n- **泛化能力受限**：在特定领域微调后的模型，一旦遇到未见过的新业务术语或表达方式，相似度计算结果往往波动巨大，系统稳定性差。\n\n### 使用 BERT-flow 后\n- **向量分布更理想**：BERT-flow 通过无监督的流模型将 BERT 输出的向量映射到平滑的高斯分布，显著修正了各向异性问题，使语义相似句子的向量距离更加准确，STS 相关系数提升至 81% 以上。\n- **零样本冷启动**：无需任何人工标注数据，仅利用目标领域的未标注文本即可训练流模型，团队在一天内就完成了新业务线的模型适配。\n- **鲁棒性增强**：经过流变换的句子嵌入在不同表达形式下保持一致性，即使面对用户口语化或包含新词的查询，也能稳定检索出核心意图匹配的历史工单。\n\nBERT-flow 的核心价值在于通过无监督的分布校准，让预训练语言模型在不消耗标注成本的前提下，直接产出高质量、可通用的句子语义表示。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbohanli_BERT-flow_c721d1cd.png","bohanli","Bohan Li","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fbohanli_4be53597.jpg",null,"Pittsburgh, PA","https:\u002F\u002Fgithub.com\u002Fbohanli",[80,84],{"name":81,"color":82,"percentage":83},"Python","#3572A5",97.8,{"name":85,"color":86,"percentage":87},"Shell","#89e051",2.2,535,68,"2026-01-05T01:41:12","Apache-2.0",4,"未说明","需要 NVIDIA GPU (通过 CUDA_VISIBLE_DEVICES 环境变量配置)，具体型号和显存大小未说明",{"notes":96,"python":97,"dependencies":98},"该项目基于 TensorFlow 1.x 实现。运行前需手动下载预训练 BERT 模型（Base 和 Large 版本）、GLUE 数据集（含 STS-B 测试集）以及 SentEval 评估工具。脚本中使用了 bash 命令，建议在 Linux 或 macOS 环境下运行。可通过设置 --use_xla 参数加速 BERT 微调过程。",">=3.6",[99],"tensorflow>=1.14",[44,14],"2026-03-27T02:49:30.150509","2026-04-20T10:24:22.845992",[104,109,114,119,124,129],{"id":105,"question_zh":106,"answer_zh":107,"source_url":108},44416,"BERT-flow 是否提供 PyTorch 版本的实现？","官方仓库目前仅提供 TensorFlow 版本，维护者表示近期没有开发 PyTorch 版本的计划。不过，社区用户已完成了完整的 PyTorch 复现版本，中间结果与原版一致且可复现论文结果。您可以使用社区版本：https:\u002F\u002Fgithub.com\u002FUKPLab\u002Fpytorch-bertflow","https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow\u002Fissues\u002F15",{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},44417,"训练 BERT-flow 进行语义空间校正时，必须使用下游任务的语料吗？能否使用全局语料（如 Wikipedia）？","不一定非要使用下游任务语料。根据更新后的 README 和实验结果，即使仅使用训练集拆分（train split）来拟合 flow 模型，其表现也优于 BERT 基线。这意味着可以使用更通用的语料进行校正，而不必针对每个下游任务单独校正一遍。","https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow\u002Fissues\u002F1",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},44418,"代码中 'avg-last-2' 策略具体选取的是哪几层的 Embedding？","根据社区讨论确认，代码中 `for i in range(n_last)` 的实现逻辑实际上选取的是最后两层（即倒数第 1 层和倒数第 2 层，对应索引 [-1] 和 [-2]）。如果论文中提到 'avg-last-2' 效果最好，在实际代码语境下通常指的就是对最后两层的输出取平均（注意：有用户指出若代码逻辑有误，可能实际等同于 'avg-first-last'，但主流理解应为最后两层）。","https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow\u002Fissues\u002F11",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},44419,"README 开头的论文链接无法打开或指向错误怎么办？","该问题已被维护者确认并修复。如果您发现链接失效，请查看仓库最新的 README.md 文件，其中已更新了正确的论文链接地址。","https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow\u002Fissues\u002F3",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},44420,"在预测（predict\u002Finference）阶段，Flow 部分的参数是否被正确加载？","这是一个已知的使用困惑点。日志中显示 Flow 部分参数未标记为 `*INIT_FROM_CKPT*` 可能是因为加载机制的日志显示差异。如果在推理时发现效果异常，建议参考社区提供的单样本推理代码示例来验证权重加载是否正确，或者检查是否需要在推理脚本中显式加载 Flow 的检查点文件。目前官方尚未在 Issue 中给出明确的代码修复，建议参考社区复现版本中的推理逻辑。","https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow\u002Fissues\u002F6",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},44421,"BERT-flow 的训练过程中，是如何保证只优化 Flow 网络而保持 BERT 参数不变的？","在训练 Flow 网络以校正语义空间时，核心思路是冻结 BERT 的参数。虽然在提供的 Issue 数据中没有直接的代码片段展示，但标准做法是在优化器设置中仅传入 Flow 网络的参数，或者将 BERT 模型的所有参数 `requires_grad` 设置为 False。用户可以检查训练脚本中优化器（Optimizer）初始化的部分，确保只包含了 flow 相关的变量。","https:\u002F\u002Fgithub.com\u002Fbohanli\u002FBERT-flow\u002Fissues\u002F13",[]]