Couchbase
Couchbase is an award-winning distributed NoSQL cloud databasethat delivers unmatched versatility, performance, scalability, and financial valuefor all of your cloud, mobile, AI, and edge computing applications.
Installation and Setup
We have to install thelangchain-couchbase
package.
pip install langchain-couchbase
Vector Store
See ausage example.
from langchain_couchbaseimport CouchbaseSearchVectorStore
import getpass
# Constants for the connection
COUCHBASE_CONNECTION_STRING= getpass.getpass(
"Enter the connection string for the Couchbase cluster: "
)
DB_USERNAME= getpass.getpass("Enter the username for the Couchbase cluster: ")
DB_PASSWORD= getpass.getpass("Enter the password for the Couchbase cluster: ")
# Create Couchbase connection object
from datetimeimport timedelta
from couchbase.authimport PasswordAuthenticator
from couchbase.clusterimport Cluster
from couchbase.optionsimport ClusterOptions
auth= PasswordAuthenticator(DB_USERNAME, DB_PASSWORD)
options= ClusterOptions(auth)
cluster= Cluster(COUCHBASE_CONNECTION_STRING, options)
# Wait until the cluster is ready for use.
cluster.wait_until_ready(timedelta(seconds=5))
vector_store= CouchbaseSearchVectorStore(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
embedding=my_embeddings,
index_name=SEARCH_INDEX_NAME,
)
# Add documents
texts=["Couchbase is a NoSQL database","LangChain is a framework for LLM applications"]
vectorstore.add_texts(texts)
# Search
query="What is Couchbase?"
docs= vectorstore.similarity_search(query)
API Reference:CouchbaseSearchVectorStore
Document loader
See ausage example.
from langchain_community.document_loaders.couchbaseimport CouchbaseLoader
connection_string="couchbase://localhost"# valid Couchbase connection string
db_username=(
"Administrator"# valid database user with read access to the bucket being queried
)
db_password="Password"# password for the database user
# query is a valid SQL++ query
query="""
SELECT h.* FROM `travel-sample`.inventory.hotel h
WHERE h.country = 'United States'
LIMIT 1
"""
loader= CouchbaseLoader(
connection_string,
db_username,
db_password,
query,
)
docs= loader.load()
LLM Caches
CouchbaseCache
Use Couchbase as a cache for prompts and responses.
See ausage example.
To import this cache:
from langchain_couchbase.cacheimport CouchbaseCache
To use this cache with your LLMs:
from langchain_core.globalsimport set_llm_cache
cluster= couchbase_cluster_connection_object
set_llm_cache(
CouchbaseCache(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
)
)
API Reference:CouchbaseCache
CouchbaseSemanticCache
Semantic caching allows users to retrieve cached prompts based on the semantic similarity between the user input and previously cached inputs. Under the hood it uses Couchbase as both a cache and a vectorstore.The CouchbaseSemanticCache needs a Search Index defined to work. Please look at theusage example on how to set up the index.
See ausage example.
To import this cache:
from langchain_couchbase.cacheimport CouchbaseSemanticCache
To use this cache with your LLMs:
from langchain_core.globalsimport set_llm_cache
# use any embedding provider...
from langchain_openai.Embeddingsimport OpenAIEmbeddings
embeddings= OpenAIEmbeddings()
cluster= couchbase_cluster_connection_object
set_llm_cache(
CouchbaseSemanticCache(
cluster=cluster,
embedding= embeddings,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
index_name=INDEX_NAME,
)
)
API Reference:CouchbaseSemanticCache
Chat Message History
Use Couchbase as the storage for your chat messages.
See ausage example.
To use the chat message history in your applications:
from langchain_couchbase.chat_message_historiesimport CouchbaseChatMessageHistory
message_history= CouchbaseChatMessageHistory(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
session_id="test-session",
)
message_history.add_user_message("hi!")
API Reference:CouchbaseChatMessageHistory