mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-06 09:55:21 +03:00
+31









Harrison Chase
Donny Greenberg
John Dagdelen
Harrison Chase
Andrew White
Peng Qu
Matt Robinson
jeff
Harrison Chase
zanderchase
Charles Frye
zanderchase
Shahriar Tajbakhsh
Stefan Keselj
Francisco Ingham
Dhruv Anand
cragwolfe
Anton Troynikov
William FH
Oliver Klingefjord
blob42
blob42
Enrico Shippole
Ibis Prevedello
jped
Justin Torre
Ivan Vendrov
Sasmitha Manathunga
Ankush Gola
Matt Robinson
Jeff Huber
Akshay
Andrew Huang
rogerserper
seanaedmiston
Hasegawa Yuya
Ivan Vendrov
Chen Wu
Dennis Antela Martinez
Maxime Vidal
Rishabh Raizada
9d6d8f85da
Co-authored-by: Donny Greenberg <dongreenberg2@gmail.com> Co-authored-by: John Dagdelen <jdagdelen@users.noreply.github.com> Co-authored-by: Harrison Chase <harrisonchase@Harrisons-MBP.attlocal.net> Co-authored-by: Andrew White <white.d.andrew@gmail.com> Co-authored-by: Peng Qu <82029664+pengqu123@users.noreply.github.com> Co-authored-by: Matt Robinson <mthw.wm.robinson@gmail.com> Co-authored-by: jeff <tangj1122@gmail.com> Co-authored-by: Harrison Chase <harrisonchase@Harrisons-MacBook-Pro.local> Co-authored-by: zanderchase <zander@unfold.ag> Co-authored-by: Charles Frye <cfrye59@gmail.com> Co-authored-by: zanderchase <zanderchase@gmail.com> Co-authored-by: Shahriar Tajbakhsh <sh.tajbakhsh@gmail.com> Co-authored-by: Stefan Keselj <skeselj@princeton.edu> Co-authored-by: Francisco Ingham <fpingham@gmail.com> Co-authored-by: Dhruv Anand <105786647+dhruv-anand-aintech@users.noreply.github.com> Co-authored-by: cragwolfe <cragcw@gmail.com> Co-authored-by: Anton Troynikov <atroyn@users.noreply.github.com> Co-authored-by: William FH <13333726+hinthornw@users.noreply.github.com> Co-authored-by: Oliver Klingefjord <oliver@klingefjord.com> Co-authored-by: blob42 <contact@blob42.xyz> Co-authored-by: blob42 <spike@w530> Co-authored-by: Enrico Shippole <henryshippole@gmail.com> Co-authored-by: Ibis Prevedello <ibiscp@gmail.com> Co-authored-by: jped <jonathanped@gmail.com> Co-authored-by: Justin Torre <justintorre75@gmail.com> Co-authored-by: Ivan Vendrov <ivan@anthropic.com> Co-authored-by: Sasmitha Manathunga <70096033+mmz-001@users.noreply.github.com> Co-authored-by: Ankush Gola <9536492+agola11@users.noreply.github.com> Co-authored-by: Matt Robinson <mrobinson@unstructuredai.io> Co-authored-by: Jeff Huber <jeffchuber@gmail.com> Co-authored-by: Akshay <64036106+akshayvkt@users.noreply.github.com> Co-authored-by: Andrew Huang <jhuang16888@gmail.com> Co-authored-by: rogerserper <124558887+rogerserper@users.noreply.github.com> Co-authored-by: seanaedmiston <seane999@gmail.com> Co-authored-by: Hasegawa Yuya <52068175+Hase-U@users.noreply.github.com> Co-authored-by: Ivan Vendrov <ivendrov@gmail.com> Co-authored-by: Chen Wu (吴尘) <henrychenwu@cmu.edu> Co-authored-by: Dennis Antela Martinez <dennis.antela@gmail.com> Co-authored-by: Maxime Vidal <max.vidal@hotmail.fr> Co-authored-by: Rishabh Raizada <110235735+rishabh-ti@users.noreply.github.com>
97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
"""Test self-hosted embeddings."""
|
|
from typing import Any
|
|
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
|
|
|
|
from langchain.embeddings import (
|
|
SelfHostedEmbeddings,
|
|
SelfHostedHuggingFaceEmbeddings,
|
|
SelfHostedHuggingFaceInstructEmbeddings,
|
|
)
|
|
|
|
|
|
def get_remote_instance() -> Any:
|
|
"""Get remote instance for testing."""
|
|
import runhouse as rh
|
|
|
|
gpu = rh.cluster(name="rh-a10x", instance_type="A100:1", use_spot=False)
|
|
gpu.install_packages(["pip:./"])
|
|
return gpu
|
|
|
|
|
|
def test_self_hosted_huggingface_embedding_documents() -> None:
|
|
"""Test self-hosted huggingface embeddings."""
|
|
documents = ["foo bar"]
|
|
gpu = get_remote_instance()
|
|
embedding = SelfHostedHuggingFaceEmbeddings(hardware=gpu)
|
|
output = embedding.embed_documents(documents)
|
|
assert len(output) == 1
|
|
assert len(output[0]) == 768
|
|
|
|
|
|
def test_self_hosted_huggingface_embedding_query() -> None:
|
|
"""Test self-hosted huggingface embeddings."""
|
|
document = "foo bar"
|
|
gpu = get_remote_instance()
|
|
embedding = SelfHostedHuggingFaceEmbeddings(hardware=gpu)
|
|
output = embedding.embed_query(document)
|
|
assert len(output) == 768
|
|
|
|
|
|
def test_self_hosted_huggingface_instructor_embedding_documents() -> None:
|
|
"""Test self-hosted huggingface instruct embeddings."""
|
|
documents = ["foo bar"]
|
|
gpu = get_remote_instance()
|
|
embedding = SelfHostedHuggingFaceInstructEmbeddings(hardware=gpu)
|
|
output = embedding.embed_documents(documents)
|
|
assert len(output) == 1
|
|
assert len(output[0]) == 768
|
|
|
|
|
|
def test_self_hosted_huggingface_instructor_embedding_query() -> None:
|
|
"""Test self-hosted huggingface instruct embeddings."""
|
|
query = "foo bar"
|
|
gpu = get_remote_instance()
|
|
embedding = SelfHostedHuggingFaceInstructEmbeddings(hardware=gpu)
|
|
output = embedding.embed_query(query)
|
|
assert len(output) == 768
|
|
|
|
|
|
def get_pipeline() -> Any:
|
|
"""Get pipeline for testing."""
|
|
model_id = "facebook/bart-base"
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
|
model = AutoModelForCausalLM.from_pretrained(model_id)
|
|
return pipeline("feature-extraction", model=model, tokenizer=tokenizer)
|
|
|
|
|
|
def inference_fn(pipeline: Any, prompt: str) -> Any:
|
|
"""Inference function for testing."""
|
|
# Return last hidden state of the model
|
|
if isinstance(prompt, list):
|
|
return [emb[0][-1] for emb in pipeline(prompt)]
|
|
return pipeline(prompt)[0][-1]
|
|
|
|
|
|
def test_self_hosted_embedding_documents() -> None:
|
|
"""Test self-hosted huggingface instruct embeddings."""
|
|
documents = ["foo bar"] * 2
|
|
gpu = get_remote_instance()
|
|
embedding = SelfHostedEmbeddings(
|
|
model_load_fn=get_pipeline, hardware=gpu, inference_fn=inference_fn
|
|
)
|
|
output = embedding.embed_documents(documents)
|
|
assert len(output) == 2
|
|
assert len(output[0]) == 50265
|
|
|
|
|
|
def test_self_hosted_embedding_query() -> None:
|
|
"""Test self-hosted custom embeddings."""
|
|
query = "foo bar"
|
|
gpu = get_remote_instance()
|
|
embedding = SelfHostedEmbeddings(
|
|
model_load_fn=get_pipeline, hardware=gpu, inference_fn=inference_fn
|
|
)
|
|
output = embedding.embed_query(query)
|
|
assert len(output) == 50265
|