milvus-logo
LFAI
홈페이지
  • 모델

SPLADE

SPLADE 임베딩은 문서와 쿼리를 매우 희소하게 표현하는 모델로, 정확한 용어 일치 및 효율성과 같은 BOW(Bag-of-Words) 모델의 바람직한 속성을 계승합니다.

Milvus는 SpladeEmbeddingFunction 클래스를 통해 SPLADE 모델과 통합됩니다. 이 클래스는 문서와 쿼리를 인코딩하고 임베딩을 Milvus 인덱싱과 호환되는 스파스 벡터로 반환하는 메서드를 제공합니다.

이 기능을 사용하려면 필요한 종속성을 설치하세요:

pip install --upgrade pymilvus
pip install "pymilvus[model]"

SpladeEmbeddingFunction을 인스턴스화하려면 다음 명령을 사용합니다:

from pymilvus import model

splade_ef = model.sparse.SpladeEmbeddingFunction(
    model_name="naver/splade-cocondenser-selfdistil", 
    device="cpu"
)

매개변수:

  • model_name(문자열)

    인코딩에 사용할 SPLADE 모델의 이름입니다. 유효한 옵션은 naver/splade-cocondenser-ensembledistil (기본값), naver/splade_v2_max, naver/splade_v2_distil, naver/splade-cocondenser-selfdistil입니다. 자세한 내용은 모델로 플레이하기를 참조하세요.

  • 장치(문자열)

    사용할 디바이스로, CPU의 경우 cpu, n번째 GPU 디바이스의 경우 cuda:n입니다.

문서에 대한 임베딩을 만들려면 encode_documents() 메서드를 사용합니다:

docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

docs_embeddings = splade_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# since the output embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse dim:", splade_ef.dim, list(docs_embeddings)[0].shape)

예상 출력은 다음과 비슷합니다:

Embeddings:   (0, 2001) 0.6392706036567688
  (0, 2034) 0.024093208834528923
  (0, 2082) 0.3230178654193878
...
  (2, 23602)    0.5671860575675964
  (2, 26757)    0.5770265460014343
  (2, 28639)    3.1990697383880615
Sparse dim: 30522 (1, 30522)

쿼리용 임베딩을 만들려면 encode_queries() 메서드를 사용합니다:

queries = ["When was artificial intelligence founded", 
           "Where was Alan Turing born?"]

query_embeddings = splade_ef.encode_queries(queries)

# Print embeddings
print("Embeddings:", query_embeddings)
# since the output embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse dim:", splade_ef.dim, list(query_embeddings)[0].shape)

예상 출력은 다음과 유사합니다:

Embeddings:   (0, 2001)        0.6353746056556702
  (0, 2194)        0.015553371049463749
  (0, 2301)        0.2756537199020386
...
  (1, 18522)        0.1282549500465393
  (1, 23602)        0.13133203983306885
  (1, 28639)        2.8150033950805664
Sparse dim: 30522 (1, 30522)

번역DeepLogo

목차 목록

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?