.. _usage:
Usage
=====
``langchain-couchbase`` is the official Couchbase integration for `LangChain `_.
Vector Store
------------
Use Couchbase as a vector store for your documents:
See a `complete vector store usage example `_.
.. code-block:: python
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 datetime import timedelta
from couchbase.auth import PasswordAuthenticator
from couchbase.cluster import Cluster
from couchbase.options import 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)
Cache
-----
Use Couchbase as a cache for LLM responses:
See a `complete cache usage example `_.
.. code-block:: python
from langchain_couchbase.cache import CouchbaseCache
from langchain_core.globals import set_llm_cache
cluster = couchbase_cluster_connection_object
cache = CouchbaseCache(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
)
set_llm_cache(cache)
Semantic Cache
--------------
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 the usage example on how to set up the index.
See a `complete semantic cache usage example `_.
.. code-block:: python
from langchain_couchbase.cache import CouchbaseSemanticCache
from langchain_core.globals import set_llm_cache
from langchain.embeddings import OpenAIEmbeddings
# use any embedding provider...
embeddings = OpenAIEmbeddings()
# Setup cache
cluster = couchbase_cluster_connection_object
cache = CouchbaseSemanticCache(
cluster=cluster,
embedding=embeddings,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
index_name=INDEX_NAME,
)
# Set as global cache
set_llm_cache(cache)
Chat Message History
--------------------
Use Couchbase as the storage for your chat messages.
See a `complete chat message history usage example `_.
.. code-block:: python
from langchain_couchbase.chat_message_histories import CouchbaseChatMessageHistory
message_history = CouchbaseChatMessageHistory(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
session_id="test-session",
)
# Add messages
message_history.add_user_message("Hello!")
message_history.add_ai_message("Hi there! How can I help you today?")
# Get messages
messages = message_history.messages