# FlagEmbedding 智源开源库FlagEmbedding,专注于检索增强llm领域。 ## 已适配模型 - **Embedding Model**: [BGE Embedding](./FlagEmbedding/baai_general_embedding) - **Reranker Model**: [BGE Reranker](./FlagEmbedding/reranker/) ## 环境配置 -v 路径、docker_name和imageID根据实际情况修改 **注意**:bitsandbytes库功能不全,暂不支持量化相关 ### Docker(方法一) ```bash docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk24.04-py310 docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash cd /your_code_path/FlagEmbedding_pytorch pip install -e . pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl ``` ### Dockerfile(方法二) ```bash cd docker docker build --no-cache -t FlagEmbedding:latest . docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash cd /your_code_path/FlagEmbedding_pytorch pip install -e . pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl ``` ### Anaconda(方法三) 关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。 ```bash DTK驱动: dtk24.04 python: python3.10 torch: 2.1.0 ``` `Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应` 其它非深度学习库安装方式如下: ```bash cd /your_code_path/FlagEmbedding_pytorch pip install -e . pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl ``` ## 已经适配的项目 ### [BGE Reranker](./FlagEmbedding/reranker) - 交叉编码器将对查询和答案实时计算相关性分数,这比向量模型(即双编码器)更准确,但比向量模型更耗时。 因此,它可以用来对嵌入模型返回的前k个文档重新排序。 我们在多语言数据上训练了交叉编码器,数据格式与向量模型相同,因此您可以根据我们的[示例](./examples/reranker)轻松地对其进行微调。 更多细节请参考[这里](./FlagEmbedding/reranker/README.md) - 我们提供了新版的交叉编码器,支持更多的语言以及更长的长度。使用的数据格式与向量模型类似,但是新增了prompt用于微调以及推理。您可以使用特定的层进行推理或使用完整的层进行推理,您可以根根据我们的[示例](./FlagEmbedding/llm_reranker#fine-tune)轻松地对其进行微调。 更多细节请参考[llm_reranker/README.md](./examples/llm_reranker/README.md) ### [BGE Embedding](./FlagEmbedding/baai_general_embedding) BGE Embedding是一个通用向量模型。 我们使用[retromae](https://github.com/staoxiao/RetroMAE)对模型进行预训练,再用对比学习在大规模成对数据上训练模型。 **你可以按照我们的[示例](./examples/finetune)在本地数据上微调嵌入模型。** 我们还提供了一个[预训练示例](./examples/pretrain)。 请注意,预训练的目标是重构文本,预训练后的模型无法直接用于相似度计算,需要进行微调之后才可以用于相似度计算。 更多关于bge的训练情况请参阅[论文](https://arxiv.org/pdf/2309.07597.pdf)和[代码](./baai_general_embedding/README.md). **注意BGE使用CLS的表征作为整个句子的表示,如果使用了错误的方式(如mean pooling)会导致效果很差。** ### 精度 暂无 ## 应用场景 ### 算法类别 检索增强 ### 热点应用行业 广媒,教育,政府 ## 预训练权重 通过[SCNet AIModels](http://113.200.138.88:18080/aimodels)下载预训练模型: ### BGE Embedding - [bge-large-zh-v1.5](http://113.200.138.88:18080/aimodels/bge-large-zh-v1.5) - [bge-base-zh-v1.5](http://113.200.138.88:18080/aimodels/baai/bge-base-zh-v1.5) - [bge-small-zh-v1.5](http://113.200.138.88:18080/aimodels/baai/bge-small-zh-v1.5) - [bge-large-en-v1.5](http://113.200.138.88:18080/aimodels/bge-large-en-v1.5) - [bge-base-en-v1.5](http://113.200.138.88:18080/aimodels/bge-base-en-v1.5) - [bge-small-en-v1.5](http://113.200.138.88:18080/aimodels/bge-small-en-v1.5) ### BGE Reranker - [bge-reranker-base](http://113.200.138.88:18080/aimodels/bge-reranker-base) - [bge-reranker-large](http://113.200.138.88:18080/aimodels/bge-reranker-large) ## 源码仓库及问题反馈 - https://developer.hpccube.com/codes/modelzoo/flagembedding_pytorch ## 参考资料 - https://github.com/FlagOpen/FlagEmbedding