README.md 4.56 KB
Newer Older
Rayyyyy's avatar
Rayyyyy committed
1
# FlagEmbedding
Rayyyyy's avatar
Rayyyyy committed
2
智源开源库FlagEmbedding,专注于检索增强llm领域。
Rayyyyy's avatar
Rayyyyy committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16

## 已适配模型
- **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

Rayyyyy's avatar
Rayyyyy committed
17
cd /your_code_path/FlagEmbedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
18
19
20
21
22
23
24
25
26
27
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

Rayyyyy's avatar
Rayyyyy committed
28
cd /your_code_path/FlagEmbedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
Rayyyyy's avatar
Rayyyyy committed
44
cd /your_code_path/FlagEmbedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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)会导致效果很差。**

### 精度
暂无

## 应用场景
### 算法类别
Rayyyyy's avatar
Rayyyyy committed
73
检索增强
Rayyyyy's avatar
Rayyyyy committed
74
75

### 热点应用行业
Rayyyyy's avatar
Rayyyyy committed
76
广媒,教育,政府
Rayyyyy's avatar
Rayyyyy committed
77
78
79

## 预训练权重
通过[SCNet AIModels](http://113.200.138.88:18080/aimodels)下载预训练模型:
Rayyyyy's avatar
Rayyyyy committed
80

Rayyyyy's avatar
Rayyyyy committed
81
82
83
84
85
86
87
88
89
90
91
92
93
### 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)

## 源码仓库及问题反馈
Rayyyyy's avatar
Rayyyyy committed
94
- https://developer.hpccube.com/codes/modelzoo/flagembedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
95
96
97

## 参考资料
- https://github.com/FlagOpen/FlagEmbedding