如何在GitHub安装的非Docker版Weaviate中启用text2vec-transformers模块
解决Weaviate启用text2vec-transformers模块的问题
你的推测没错,从GitHub Releases下载的Weaviate核心二进制包确实不包含任何模块——Weaviate的向量器模块(比如text2vec-transformers)是独立的服务组件,需要单独部署,再通过配置让Weaviate调用它。以下是两种可行的解决方法:
方法一:用Docker Compose一键部署(推荐)
这种方式能自动拉起Weaviate和对应的transformers模块服务,配置更省心:
- 创建
docker-compose.yml文件,写入以下内容:
version: '3.4' services: weaviate: image: semitechnologies/weaviate:latest ports: - "8080:8080" environment: - WEAVIATE_DEFAULT_VECTORIZER_MODULE=text2vec-transformers - TRANSFORMERS_INFERENCE_API=http://t2v-transformers:8080 - QUERY_DEFAULTS_LIMIT=20 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true - PERSISTENCE_DATA_PATH=/var/lib/weaviate volumes: - weaviate_data:/var/lib/weaviate depends_on: - t2v-transformers t2v-transformers: image: semitechnologies/transformers-inference:sentence-transformers-all-MiniLM-L6-v2 environment: - ENABLE_CUDA=0 # 有GPU的话改成1,启用硬件加速 volumes: weaviate_data:
- 在文件所在目录执行启动命令:
docker-compose up -d
- 验证模块状态:
curl http://localhost:8080/v1/modules
此时应该能看到text2vec-transformers模块的相关信息。
方法二:手动部署模块服务(适合自定义场景)
如果不想用Docker Compose,可以单独启动transformers推理服务,再配置Weaviate:
- 用Docker启动transformers推理服务(指定端口8081避免和Weaviate冲突):
docker run -p 8081:8080 semitechnologies/transformers-inference:sentence-transformers-all-MiniLM-L6-v2
- 修正环境变量,指向刚启动的推理服务,再启动Weaviate:
export WEAVIATE_DEFAULT_VECTORIZER_MODULE=text2vec-transformers export TRANSFORMERS_INFERENCE_API="http://localhost:8081" ./weaviate --host=127.0.0.1 --port=8080 --scheme=http
- 同样用
curl http://localhost:8080/v1/modules验证模块是否启用。
为什么之前的操作失败?
- GitHub Releases的Weaviate核心不支持
--modules参数,因为模块都是外置服务,这个参数仅针对早期内置模块,现在已不再使用。 - 你之前设置的
TRANSFORMERS_INFERENCE_API指向了Weaviate自己的8080端口,这是错误的,必须指向transformers推理服务的地址。
内容的提问来源于stack exchange,提问作者Lakhan Pal
相关产品推荐
相关产品推荐

