PredictionGuardEmbeddings
Prediction Guard is a secure, scalable GenAI platform that safeguards sensitive data, prevents common AI malfunctions, and runs on affordable hardware.
Overview
Integration details
This integration shows how to use the Prediction Guard embeddings integration with Langchain. This integration supports text and images, separately or together in matched pairs.
Setup
To access Prediction Guard models, contact us here to get a Prediction Guard API key and get started.
Credentials
Once you have a key, you can set it with
import os
os.environ["PREDICTIONGUARD_API_KEY"] = "<Prediction Guard API Key"
Installation
%pip install --upgrade --quiet langchain-predictionguard
Instantiation
First, install the Prediction Guard and LangChain packages. Then, set the required env vars and set up package imports.
from langchain_predictionguard import PredictionGuardEmbeddings
embeddings = PredictionGuardEmbeddings(model="bridgetower-large-itm-mlm-itc")
Prediction Guard embeddings generation supports both text and images. This integration includes that support spread across various functions.
Indexing and Retrieval
# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore
text = "LangChain is the framework for building context-aware reasoning applications."
vectorstore = InMemoryVectorStore.from_texts(
[text],
embedding=embeddings,
)
# Use the vectorstore as a retriever
retriever = vectorstore.as_retriever()
# Retrieve the most similar text
retrieved_documents = retriever.invoke("What is LangChain?")
# Show the retrieved document's content
retrieved_documents[0].page_content
'LangChain is the framework for building context-aware reasoning applications.'
Direct Usage
The vectorstore and retriever implementations are calling embeddings.embed_documents(...)
and embeddings.embed_query(...)
to create embeddings from the texts used in the from_texts
and retrieval invoke
operations.
These methods can be directly called with the following commands.
Embed single texts
# Embedding a single string
text = "This is an embedding example."
single_vector = embeddings.embed_query(text)
single_vector[:5]
[0.01456777285784483,
-0.08131945133209229,
-0.013045587576925755,
-0.09488929063081741,
-0.003087474964559078]
Embed multiple texts
# Embedding multiple strings
docs = [
"This is an embedding example.",
"This is another embedding example.",
]
two_vectors = embeddings.embed_documents(docs)
for vector in two_vectors:
print(vector[:5])
[0.01456777285784483, -0.08131945133209229, -0.013045587576925755, -0.09488929063081741, -0.003087474964559078]
[-0.0015021917643025517, -0.08883760124444962, -0.0025286630261689425, -0.1052245944738388, 0.014225339516997337]
Embed single images
# Embedding a single image. These functions accept image URLs, image files, data URIs, and base64 encoded strings.
image = [
"https://farm4.staticflickr.com/3300/3497460990_11dfb95dd1_z.jpg",
]
single_vector = embeddings.embed_images(image)
print(single_vector[0][:5])
[0.0911610797047615, -0.034427884966135025, 0.007927080616354942, -0.03500846028327942, 0.022317267954349518]
Embed multiple images
# Embedding multiple images
images = [
"https://fastly.picsum.photos/id/866/200/300.jpg?hmac=rcadCENKh4rD6MAp6V_ma-AyWv641M4iiOpe1RyFHeI",
"https://farm4.staticflickr.com/3300/3497460990_11dfb95dd1_z.jpg",
]
two_vectors = embeddings.embed_images(images)
for vector in two_vectors:
print(vector[:5])
[0.1593627631664276, -0.03636132553219795, -0.013229663483798504, -0.08789524435997009, 0.062290553003549576]
[0.0911610797047615, -0.034427884966135025, 0.007927080616354942, -0.03500846028327942, 0.022317267954349518]
Embed single text-image pairs
# Embedding a single text-image pair
inputs = [
{
"text": "This is an embedding example.",
"image": "https://farm4.staticflickr.com/3300/3497460990_11dfb95dd1_z.jpg",
},
]
single_vector = embeddings.embed_image_text(inputs)
print(single_vector[0][:5])
[0.0363212488591671, -0.10172265768051147, -0.014760786667466164, -0.046511903405189514, 0.03860781341791153]
Embed multiple text-image pairs
# Embedding multiple text-image pairs
inputs = [
{
"text": "This is an embedding example.",
"image": "https://fastly.picsum.photos/id/866/200/300.jpg?hmac=rcadCENKh4rD6MAp6V_ma-AyWv641M4iiOpe1RyFHeI",
},
{
"text": "This is another embedding example.",
"image": "https://farm4.staticflickr.com/3300/3497460990_11dfb95dd1_z.jpg",
},
]
two_vectors = embeddings.embed_image_text(inputs)
for vector in two_vectors:
print(vector[:5])
[0.11867266893386841, -0.05898813530802727, -0.026179173961281776, -0.10747235268354416, 0.07684746384620667]
[0.026654226705431938, -0.10080841928720474, -0.012732953764498234, -0.04365091398358345, 0.036743905395269394]
API Reference
For detailed documentation of all PredictionGuardEmbeddings features and configurations check out the API reference: https://python.langchain.com/api_reference/community/embeddings/langchain_community.embeddings.predictionguard.PredictionGuardEmbeddings.html
Related
- Embedding model conceptual guide
- Embedding model how-to guides