Skip to content

Commit 51d4385

Browse files
authored
langchain: add support for vectorize (#451)
1 parent a76a72c commit 51d4385

File tree

4 files changed

+46
-10
lines changed

4 files changed

+46
-10
lines changed

libs/e2e-tests/e2e_tests/langchain/test_compatibility_rag.py

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,16 @@ def openai_gpt4_llm():
8787
}
8888

8989

90+
@pytest.fixture
91+
def openai_gpt4o_llm():
92+
model = "gpt-4o"
93+
94+
return {
95+
"llm": _chat_openai(model=model, streaming=False),
96+
"nemo_config": {"engine": "openai", "model": model},
97+
}
98+
99+
90100
def _openai_embeddings(**kwargs) -> callable:
91101
return lambda: OpenAIEmbeddings(
92102
openai_api_key=get_required_env("OPENAI_API_KEY"), **kwargs
@@ -108,6 +118,22 @@ def openai_3large_embedding():
108118
return _openai_embeddings(model="text-embedding-3-large")
109119

110120

121+
@pytest.fixture
122+
def astra_vectorize_openai_small():
123+
def call():
124+
from astrapy.info import CollectionVectorServiceOptions
125+
126+
return {
127+
"collection_vector_service_options": CollectionVectorServiceOptions(
128+
provider="openai",
129+
model_name="text-embedding-3-small",
130+
),
131+
"collection_embedding_api_key": get_required_env("OPENAI_API_KEY"),
132+
}
133+
134+
return call
135+
136+
111137
@pytest.fixture
112138
def azure_openai_gpt35turbo_llm():
113139
# model is configurable because it can be different from the deployment
@@ -221,31 +247,30 @@ def huggingface_hub_flant5xxl_llm():
221247

222248
@pytest.fixture
223249
def huggingface_hub_minilml6v2_embedding():
224-
225250
return lambda: HuggingFaceInferenceAPIEmbeddings(
226251
api_key=get_required_env("HUGGINGFACE_HUB_KEY"),
227252
model_name="sentence-transformers/all-MiniLM-l6-v2",
228253
)
229254

230255

231256
@pytest.fixture
232-
def nvidia_aifoundation_nvolveqa40k_embedding():
257+
def nvidia_aifoundation_embedqa4_embedding():
233258
def embedding():
234259
get_required_env("NVIDIA_API_KEY")
235260
from langchain_nvidia_ai_endpoints.embeddings import NVIDIAEmbeddings
236261

237-
return NVIDIAEmbeddings(model="playground_nvolveqa_40k")
262+
return NVIDIAEmbeddings(model="ai-embed-qa-4")
238263

239264
return embedding
240265

241266

242267
@pytest.fixture
243-
def nvidia_aifoundation_mixtral8x7b_llm():
268+
def nvidia_aifoundation_mistral_llm():
244269
def llm():
245270
get_required_env("NVIDIA_API_KEY")
246271
from langchain_nvidia_ai_endpoints import ChatNVIDIA
247272

248-
return ChatNVIDIA(model="playground_mixtral_8x7b")
273+
return ChatNVIDIA(model="ai-mistral-large")
249274

250275
return {"llm": llm, "nemo_config": None}
251276

@@ -264,15 +289,16 @@ def llm():
264289
("openai_ada002_embedding", "openai_gpt35turbo_llm"),
265290
("openai_3large_embedding", "openai_gpt35turbo_llm_streaming"),
266291
("openai_3small_embedding", "openai_gpt4_llm"),
292+
("astra_vectorize_openai_small", "openai_gpt4o_llm"),
267293
("azure_openai_ada002_embedding", "azure_openai_gpt35turbo_llm"),
268294
("vertex_gecko_embedding", "vertex_bison_llm"),
269295
("bedrock_titan_embedding", "bedrock_anthropic_claudev2_llm"),
270296
("bedrock_cohere_embedding", "bedrock_mistral_mistral7b_llm"),
271297
("bedrock_cohere_embedding", "bedrock_meta_llama2_llm"),
272298
# ("huggingface_hub_minilml6v2_embedding", "huggingface_hub_flant5xxl_llm"),
273299
(
274-
"nvidia_aifoundation_nvolveqa40k_embedding",
275-
"nvidia_aifoundation_mixtral8x7b_llm",
300+
"nvidia_aifoundation_embedqa4_embedding",
301+
"nvidia_aifoundation_mistral_llm",
276302
),
277303
],
278304
)
@@ -304,8 +330,15 @@ def _run_test(
304330
if test_case == "nemo_guardrails" and not resolved_llm["nemo_config"]:
305331
skip_test_due_to_implementation_not_supported("nemo_guardrails")
306332

333+
embedding = embedding_fn()
334+
vector_store_kwargs = {}
335+
if isinstance(embedding, dict):
336+
vector_store_kwargs = embedding
337+
else:
338+
vector_store_kwargs["embedding"] = embedding
339+
307340
vector_store = vector_store_context.new_langchain_vector_store(
308-
embedding=embedding_fn()
341+
**vector_store_kwargs
309342
)
310343
llm = resolved_llm["llm"]() # llm is a callable
311344

libs/e2e-tests/e2e_tests/test_utils/cassandra_vector_store_handler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from llama_index.core.vector_stores.types import (
1818
VectorStoreQuery,
1919
)
20+
from e2e_tests.test_utils import skip_test_due_to_implementation_not_supported
2021

2122

2223
from e2e_tests.test_utils import (
@@ -133,6 +134,8 @@ def __init__(self, handler: CassandraVectorStoreHandler):
133134
def new_langchain_vector_store(
134135
self, **kwargs
135136
) -> EnhancedCassandraLangChainVectorStore:
137+
if "embedding" not in kwargs:
138+
skip_test_due_to_implementation_not_supported("astra vectorize")
136139
return EnhancedCassandraLangChainVectorStore(
137140
session=self.handler.cassandra_session,
138141
keyspace="default_keyspace",

libs/e2e-tests/pyproject.llamaindex.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ llama-parse = { git = "https://github.com/run-llama/llama_parse.git", branch = "
4444
langchain = "0.1.17"
4545
langchain-core = "0.1.48"
4646
langchain-community = "0.0.36"
47-
langchain-astradb = "0.2.0"
47+
langchain-astradb = "0.3.3"
4848
langchain-openai = "0.1.3"
4949
langchain-google-genai = "0.0.11"
5050
langchain-google-vertexai = "1.0.1"

libs/langchain/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ ragstack-ai-colbert = "1.0.5"
2020
langchain = "0.1.19"
2121
langchain-core = "0.1.52"
2222
langchain-community = "0.0.38"
23-
langchain-astradb = "0.3.0"
23+
langchain-astradb = "0.3.3"
2424
langchain-openai = "0.1.3"
2525
langchain-google-genai = { version = "0.0.11", optional = true }
2626
langchain-google-vertexai = { version = "1.0.1", optional = true }

0 commit comments

Comments
 (0)