/ src / python / txtai / vectors / dense / huggingface.py
huggingface.py
 1  """
 2  Hugging Face module
 3  """
 4  
 5  from ...models import Models, PoolingFactory
 6  
 7  from ..base import Vectors
 8  
 9  
10  class HFVectors(Vectors):
11      """
12      Builds vectors using the Hugging Face transformers library.
13      """
14  
15      @staticmethod
16      def ismethod(method):
17          """
18          Checks if this method uses local transformers-based models.
19  
20          Args:
21              method: input method
22  
23          Returns:
24              True if this is a local transformers-based model, False otherwise
25          """
26  
27          return method in ("transformers", "pooling", "clspooling", "meanpooling")
28  
29      def loadmodel(self, path):
30          # Build embeddings with transformers pooling
31          return PoolingFactory.create(
32              {
33                  "method": self.config.get("method"),
34                  "path": path,
35                  "device": Models.deviceid(self.config.get("gpu", True)),
36                  "tokenizer": self.config.get("tokenizer"),
37                  "maxlength": self.config.get("maxlength"),
38                  "loadprompts": "instructions" not in self.config,
39                  "modelargs": self.config.get("vectors", {}),
40              }
41          )
42  
43      def encode(self, data, category=None):
44          # Encode data using vectors model
45          return self.model.encode(data, batch=self.encodebatch, category=category)