Embedding Studio 是一个创新的开源框架,旨在将嵌入模型和向量数据库无缝转换成一个全面的搜索引擎。通过内置点击流收集、搜索体验的持续改进和嵌入模型的自动适应功能,它为全周期搜索引擎提供了一站式解决方案。
功能
- 🔄 将您的向量数据库转换为全周期搜索引擎
- 🖱️ 收集用户反馈如点击流
- 🚀 (*) 实时改进搜索体验,无需令人沮丧的等待时间
- 📊 (*) 监控搜索质量
- 🎯 通过迭代的指标微调程序改进嵌入模型
- 🆕 (*) 使用新版本的嵌入模型进行推理
- 🛠️ (*) 在您的目录数据上优先微调您的嵌入
- 🔍 (*) 使用和改进零样本查询解析器,将结构化数据库与非结构化搜索相结合
(*) - 正在开发中的功能
Embedding Studio 高度可定制,因此您可以带上自己的:
- 数据源
- 向量数据库
- 点击流数据库
- 嵌入模型
什么时候使用 Embedding Studio 最合适?
更多信息请点击 这里。
- 📚💼 拥有大量目录和丰富非结构化数据的企业。
- 🛍️🤝 以客户为中心的平台,优先考虑个性化体验。
- 🔄📊 拥有不断变化的内容和用户偏好的动态内容平台。
- 🔍🧠 处理复杂多方面搜索查询的平台。
- 🔄📊 在搜索过程中集成混合数据类型。
- 🔄🚀 通过用户互动寻求持续优化的平台。
- 💵💡 寻求强大且性价比高解决方案的预算有限组织。
可以解决的挑战
免责声明: Embedding Studio 不是另一个向量数据库,它是一个框架,允许您将向量数据库转换为包含所有细微差别的搜索引擎。
- 空有一个目录,但想要快速展示
- 搜索质量静态,但希望随着时间改进
- 用户体验改进时间过长,导致用户感到沮丧
- 索引更新缓慢且耗尽资源
- 结构化和非结构化搜索混合,却不知道如何结合
- 结构化搜索带有非结构化查询,希望能正确解析
- 新项目被淹没
更多关于挑战与解决方案的信息请点击 这里
概述
我们的框架使您能够基于用户体验持续微调您的模型,从而更快更准确地形成用户查询的搜索结果。
$\color{red}{\textsf{红色:}}$ 在图表上,未经过增强的典型搜索解决方案,如全文搜索(FTS)、最近邻搜索(NNS)等,标记为红色。如果未使用额外工具,搜索质量会随着时间保持不变。
$\color{orange}{\textsf{橙色:}}$ 这些解决方案积累了一些反馈(点击、评论、投票、讨论等),然后开始进行完整的模型重训练。这些解决方案的主要问题是完整的模型重训练是一个耗时且昂贵的过程,因此缺乏实时调整(例如,当某个产品突然需求增加,而搜索系统尚未适应)。
$\color{#6666ff}{\textsf{靛蓝色:}}$ 我们提出的解决方案允许收集用户反馈,并迅速基于新旧版本的差异重新训练模型。这使得您的系统搜索质量曲线更加平滑和相关。
文档
查看我们的 官方文档。
入门
你好,非结构化世界!
要尝试 Embedding Studio,您可以启动预配置的演示项目。我们准备了存储在公共 S3 桶中的数据集、用户点击模拟器和用于微调模型的基本脚本。通过将其调整为您的需求,您可以开始微调您的模型。
确保您的系统上可以使用 docker compose version
命令:
Docker Compose version v2.23.3
您也可以尝试使用 docker-compose version 命令。接下来,我们将使用较新的 docker compose version 命令,但 docker-compose version 命令也可能在您的系统上成功运行。
首先,通过执行以下命令启动所有 Embedding Studio 服务:
docker compose up -d
一旦所有服务启动后,您就可以开始使用 Embedding Studio。我们来模拟一次用户搜索会话。我们将运行一个预构建脚本,该脚本将调用 Embedding Studio API 并模拟用户行为:
docker compose --profile demo_stage_clickstream up -d
脚本执行后,您可以开始模型微调。执行以下命令:
docker compose --profile demo_stage_finetuning up -d
这将会为微调工作者队列一个任务。要获取微调队列中的所有任务,请发送 GET 请求到端点 /api/v1/fine-tuning/task
:
curl -X GET http://localhost:5000/api/v1/fine-tuning/task
答案将像这样:
[
{
"fine_tuning_method": "Default Fine Tuning Method",
"status": "processing",
"created_at": "2023-12-21T14:30:25.823000",
"updated_at": "2023-12-21T14:32:16.673000",
"batch_id": "65844a671089823652b83d43",
"id": "65844c019fa7cf0957d04758"
}
]
一旦您有了任务 ID,您可以通过发送 GET 请求到端点 /api/v1/fine-tuning/task/{task_id}
来直接监控微调进度:
curl -X GET http://localhost:5000/api/v1/fine-tuning/task/65844c019fa7cf0957d04758
结果将类似于您查询所有任务时收到的答复。为了更方便地跟踪进度,您可以使用位于 http://localhost:5001 的 Mlflow。
检查 fine_tuning_worker
的日志也很有帮助,以确保一切正常运行。为此,请使用以下命令列出所有服务的日志:
docker logs embedding_studio-fine_tuning_worker-1
如果一切顺利完成,您将看到类似的日志:
Epoch 2: 100%|██████████| 13/13 [01:17<00:00, 0.17it/s, v_num=8]
[2023-12-21 14:59:05,931] [PID 7] [Thread-6] [pytorch_lightning.utilities.rank_zero] [INFO] `Trainer.fit` stopped: `max_epochs=3` reached.
Epoch 2: 100%|██████████| 13/13 [01:17<00:00, 0.17it/s, v_num=8]
[2023-12-21 14:59:05,975] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.finetune_embedding_one_param] [INFO] Save model (best only, current quality: 8.426392069685529e-05)
[2023-12-21 14:59:05,975] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [INFO] Save model for 2 / 9a9509bf1ed7407fb61f8d623035278e
[2023-12-21 14:59:06,009] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [WARNING] No finished experiments found with model uploaded, except initial
[2023-12-21 14:59:16,432] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [INFO] Upload is finished
[2023-12-21 14:59:16,433] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.finetune_embedding_one_param] [INFO] Saving is finished
[2023-12-21 14:59:16,433] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [INFO] Finish current run 2 / 9a9509bf1ed7407fb61f8d623035278e
[2023-12-21 14:59:16,445] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [INFO] Current run is finished
[2023-12-21 14:59:16,656] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [INFO] Finish current iteration 2
[2023-12-21 14:59:16,673] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.experiments.experiments_tracker] [INFO] Current iteration is finished
[2023-12-21 14:59:16,673] [PID 7] [Thread-6] [embedding_studio.workers.fine_tuning.worker] [INFO] Fine tuning of the embedding model was completed successfully!
恭喜!您已成功改进模型!
要下载最佳模型,您可以使用 Embedding Studio API:
curl -X GET http://localhost:5000/api/v1/fine-tuning/task/65844c019fa7cf0957d04758
如果一切正常,您将看到以下输出:
{
"fine_tuning_method": "Default Fine Tuning Method",
"status": "done",
"best_model_url": "http://localhost:5001/get-artifact?path=model%2Fdata%2Fmodel.pth&run_uuid=571304f0c330448aa8cbce831944cfdd",
...
}
其中 best_model_url
字段包含 HTTP 可访问的 model.pth
文件。
您可以通过执行以下命令下载 *.pth 文件:
wget http://localhost:5001/get-artifact?path=model%2Fdata%2Fmodel.pth&run_uuid=571304f0c330448aa8cbce831944cfdd
贡献
我们欢迎对 Embedding Studio 的贡献!
<SOURCE_TEXT>
## 许可证
Embedding Studio 根据 Apache 许可证 2.0 版进行许可。有关完整的许可证文本,请参阅 [LICENSE](LICENSE)。
</SOURCE_TEXT>