mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-02 19:47:13 +00:00
cosmosdbnosql: Added Cosmos DB NoSQL Semantic Cache Integration with tests and jupyter notebook (#24424)
* Added Cosmos DB NoSQL Semantic Cache Integration with tests and jupyter notebook --------- Co-authored-by: Aayush Kataria <aayushkataria3011@gmail.com> Co-authored-by: Chester Curme <chester.curme@gmail.com>
This commit is contained in:
@@ -14,8 +14,8 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "88486f6f",
|
||||
"execution_count": null,
|
||||
"id": "f938e881",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@@ -30,12 +30,12 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 2,
|
||||
"id": "10ad9224",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2024-04-12T02:05:57.319706Z",
|
||||
"start_time": "2024-04-12T02:05:57.303868Z"
|
||||
"end_time": "2024-12-06T00:54:06.474593Z",
|
||||
"start_time": "2024-12-06T00:53:58.727138Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
@@ -1820,7 +1820,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 83,
|
||||
"execution_count": null,
|
||||
"id": "bc1570a2a77b58c8",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
@@ -1848,12 +1848,155 @@
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%%time\n",
|
||||
"# The second time it is, so it goes faster\n",
|
||||
"llm.invoke(\"Tell me a joke\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "235ff73bf7143f13",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Azure CosmosDB NoSql Semantic Cache\n",
|
||||
"\n",
|
||||
"You can use this integrated [vector database](https://learn.microsoft.com/en-us/azure/cosmos-db/vector-database) for caching."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "41fea5aa7b2153ca",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2024-12-06T00:55:38.648972Z",
|
||||
"start_time": "2024-12-06T00:55:38.290541Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from typing import Any, Dict\n",
|
||||
"\n",
|
||||
"from azure.cosmos import CosmosClient, PartitionKey\n",
|
||||
"from langchain_community.cache import AzureCosmosDBNoSqlSemanticCache\n",
|
||||
"from langchain_openai import OpenAIEmbeddings\n",
|
||||
"\n",
|
||||
"HOST = \"COSMOS_DB_URI\"\n",
|
||||
"KEY = \"COSMOS_DB_KEY\"\n",
|
||||
"\n",
|
||||
"cosmos_client = CosmosClient(HOST, KEY)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def get_vector_indexing_policy() -> dict:\n",
|
||||
" return {\n",
|
||||
" \"indexingMode\": \"consistent\",\n",
|
||||
" \"includedPaths\": [{\"path\": \"/*\"}],\n",
|
||||
" \"excludedPaths\": [{\"path\": '/\"_etag\"/?'}],\n",
|
||||
" \"vectorIndexes\": [{\"path\": \"/embedding\", \"type\": \"diskANN\"}],\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def get_vector_embedding_policy() -> dict:\n",
|
||||
" return {\n",
|
||||
" \"vectorEmbeddings\": [\n",
|
||||
" {\n",
|
||||
" \"path\": \"/embedding\",\n",
|
||||
" \"dataType\": \"float32\",\n",
|
||||
" \"dimensions\": 1536,\n",
|
||||
" \"distanceFunction\": \"cosine\",\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"cosmos_container_properties_test = {\"partition_key\": PartitionKey(path=\"/id\")}\n",
|
||||
"cosmos_database_properties_test: Dict[str, Any] = {}\n",
|
||||
"\n",
|
||||
"set_llm_cache(\n",
|
||||
" AzureCosmosDBNoSqlSemanticCache(\n",
|
||||
" cosmos_client=cosmos_client,\n",
|
||||
" embedding=OpenAIEmbeddings(),\n",
|
||||
" vector_embedding_policy=get_vector_embedding_policy(),\n",
|
||||
" indexing_policy=get_vector_indexing_policy(),\n",
|
||||
" cosmos_container_properties=cosmos_container_properties_test,\n",
|
||||
" cosmos_database_properties=cosmos_database_properties_test,\n",
|
||||
" )\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "1e1cd93819921bf6",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2024-12-06T00:55:44.513080Z",
|
||||
"start_time": "2024-12-06T00:55:41.353843Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 374 ms, sys: 34.2 ms, total: 408 ms\n",
|
||||
"Wall time: 3.15 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"\"\\n\\nWhy couldn't the bicycle stand up by itself? Because it was two-tired!\""
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%%time\n",
|
||||
"# The first time, it is not yet in cache, so it should take longer\n",
|
||||
"llm.invoke(\"Tell me a joke\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "576ce24c1244812a",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2024-12-06T00:55:50.925865Z",
|
||||
"start_time": "2024-12-06T00:55:50.548520Z"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 17.7 ms, sys: 2.88 ms, total: 20.6 ms\n",
|
||||
"Wall time: 373 ms\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"\"\\n\\nWhy couldn't the bicycle stand up by itself? Because it was two-tired!\""
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%%time\n",
|
||||
"# The second time it is, so it goes faster\n",
|
||||
"llm.invoke(\"Tell me a joke\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "306ff47b",
|
||||
|
Reference in New Issue
Block a user