mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-19 16:19:26 +03:00
+4








8bba69ffd0
Fixed some grammatical typos in doc files CC: @baskaryan, @eyurtsev, @rlancemartin. --------- Co-authored-by: Aashish Saini <141953346+AashishSainiShorthillsAI@users.noreply.github.com> Co-authored-by: AryamanJaiswalShorthillsAI <142397527+AryamanJaiswalShorthillsAI@users.noreply.github.com> Co-authored-by: Adarsh Shrivastav <142413097+AdarshKumarShorthillsAI@users.noreply.github.com> Co-authored-by: Vishal <141389263+VishalYadavShorthillsAI@users.noreply.github.com> Co-authored-by: ChetnaGuptaShorthillsAI <142381084+ChetnaGuptaShorthillsAI@users.noreply.github.com> Co-authored-by: PankajKumarShorthillsAI <142473460+PankajKumarShorthillsAI@users.noreply.github.com> Co-authored-by: AbhishekYadavShorthillsAI <142393903+AbhishekYadavShorthillsAI@users.noreply.github.com> Co-authored-by: AmitSinghShorthillsAI <142410046+AmitSinghShorthillsAI@users.noreply.github.com> Co-authored-by: Md Nazish Arman <142379599+MdNazishArmanShorthillsAI@users.noreply.github.com> Co-authored-by: KamalSharmaShorthillsAI <142474019+KamalSharmaShorthillsAI@users.noreply.github.com> Co-authored-by: Lakshya <lakshyagupta87@yahoo.com> Co-authored-by: Aayush <142384656+AayushShorthillsAI@users.noreply.github.com> Co-authored-by: AnujMauryaShorthillsAI <142393269+AnujMauryaShorthillsAI@users.noreply.github.com>
19 KiB
19 KiB
In [1]:
from uuid import uuid4
from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import ZepVectorStore
from langchain.vectorstores.zep import CollectionConfig
ZEP_API_URL = "http://localhost:8000" # this is the API url of your Zep instance
ZEP_API_KEY = "<optional_key>" # optional API Key for your Zep instance
collection_name = f"babbage{uuid4().hex}" # a unique collection name. alphanum only
# Collection config is needed if we're creating a new Zep Collection
config = CollectionConfig(
name=collection_name,
description="<optional description>",
metadata={"optional_metadata": "associated with the collection"},
is_auto_embedded=True, # we'll have Zep embed our documents using its low-latency embedder
embedding_dimensions=1536 # this should match the model you've configured Zep to use.
)
# load the document
article_url = "https://www.gutenberg.org/cache/epub/71292/pg71292.txt"
loader = WebBaseLoader(article_url)
documents = loader.load()
# split it into chunks
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# Instantiate the VectorStore. Since the collection does not already exist in Zep,
# it will be created and populated with the documents we pass in.
vs = ZepVectorStore.from_documents(docs,
collection_name=collection_name,
config=config,
api_url=ZEP_API_URL,
api_key=ZEP_API_KEY
)In [2]:
# wait for the collection embedding to complete
async def wait_for_ready(collection_name: str) -> None:
from zep_python import ZepClient
import time
client = ZepClient(ZEP_API_URL, ZEP_API_KEY)
while True:
c = await client.document.aget_collection(collection_name)
print(
"Embedding status: "
f"{c.document_embedded_count}/{c.document_count} documents embedded"
)
time.sleep(1)
if c.status == "ready":
break
await wait_for_ready(collection_name)Embedding status: 0/402 documents embedded Embedding status: 0/402 documents embedded Embedding status: 402/402 documents embedded
In [3]:
# query it
query = "what is the structure of our solar system?"
docs_scores = await vs.asimilarity_search_with_relevance_scores(query, k=3)
# print results
for d, s in docs_scores:
print(d.page_content, " -> ", s, "\n====\n")Tables necessary to determine the places of the planets are not less necessary than those for the sun, moon, and stars. Some notion of the number and complexity of these tables may be formed, when we state that the positions of the two principal planets, (and these are the most necessary for the navigator,) Jupiter and Saturn, require each not less than one hundred and sixteen tables. Yet it is not only necessary to predict the position of these bodies, but it is likewise expedient to -> 0.8998482592744614 ==== tabulate the motions of the four satellites of Jupiter, to predict the exact times at which they enter his shadow, and at which their shadows cross his disc, as well as the times at which they are interposed between him and the Earth, and he between them and the Earth. Among the extensive classes of tables here enumerated, there are several which are in their nature permanent and unalterable, and would never require to be recomputed, if they could once be computed with perfect -> 0.8976143854195493 ==== the scheme of notation thus applied, immediately suggested the advantages which must attend it as an instrument for expressing the structure, operation, and circulation of the animal system; and we entertain no doubt of its adequacy for that purpose. Not only the mechanical connexion of the solid members of the bodies of men and animals, but likewise the structure and operation of the softer parts, including the muscles, integuments, membranes, &c. the nature, motion, -> 0.889982614061763 ====
In [4]:
query = "what is the structure of our solar system?"
docs = await vs.asearch(query, search_type="mmr", k=3)
for d in docs:
print(d.page_content, "\n====\n")Tables necessary to determine the places of the planets are not less necessary than those for the sun, moon, and stars. Some notion of the number and complexity of these tables may be formed, when we state that the positions of the two principal planets, (and these the most necessary for the navigator,) Jupiter and Saturn, require each not less than one hundred and sixteen tables. Yet it is not only necessary to predict the position of these bodies, but it is likewise expedient to ==== the scheme of notation thus applied, immediately suggested the advantages which must attend it as an instrument for expressing the structure, operation, and circulation of the animal system; and we entertain no doubt of its adequacy for that purpose. Not only the mechanical connexion of the solid members of the bodies of men and animals, but likewise the structure and operation of the softer parts, including the muscles, integuments, membranes, &c. the nature, motion, ==== tabulate the motions of the four satellites of Jupiter, to predict the exact times at which they enter his shadow, and at which their shadows cross his disc, as well as the times at which they are interposed between him and the Earth, and he between them and the Earth. Among the extensive classes of tables here enumerated, there are several which are in their nature permanent and unalterable, and would never require to be recomputed, if they could once be computed with perfect ====
In [5]:
# Let's add more content to the existing Collection
article_url = "https://www.gutenberg.org/files/48320/48320-0.txt"
loader = WebBaseLoader(article_url)
documents = loader.load()
# split it into chunks
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
await vs.aadd_documents(docs)
await wait_for_ready(collection_name)Embedding status: 402/1692 documents embedded Embedding status: 402/1692 documents embedded Embedding status: 552/1692 documents embedded Embedding status: 702/1692 documents embedded Embedding status: 1002/1692 documents embedded Embedding status: 1002/1692 documents embedded Embedding status: 1152/1692 documents embedded Embedding status: 1302/1692 documents embedded Embedding status: 1452/1692 documents embedded Embedding status: 1602/1692 documents embedded Embedding status: 1692/1692 documents embedded
In [6]:
query = "Was he interested in astronomy?"
docs = await vs.asearch(query, search_type="similarity", k=3)
for d in docs:
print(d.page_content, " -> ", d.metadata, "\n====\n")by that body to Mr Babbage:--'In no department of science, or of the
arts, does this discovery promise to be so eminently useful as in that
of astronomy, and its kindred sciences, with the various arts dependent
on them. In none are computations more operose than those which
astronomy in particular requires;--in none are preparatory facilities
more needful;--in none is error more detrimental. The practical
astronomer is interrupted in his pursuit, and diverted from his task of -> {'source': 'https://www.gutenberg.org/cache/epub/71292/pg71292.txt'}
====
possess all knowledge which is likely to be useful to him in his work,
and this I have endeavored in my case to do. If I remember rightly, you
on one occasion, in the early days of our friendship, defined my limits
in a very precise fashion.”
“Yes,” I answered, laughing. “It was a singular document. Philosophy,
astronomy, and politics were marked at zero, I remember. Botany
variable, geology profound as regards the mud-stains from any region -> {'source': 'https://www.gutenberg.org/files/48320/48320-0.txt'}
====
in all its relations; but above all, with Astronomy and Navigation. So
important have they been considered, that in many instances large sums
have been appropriated by the most enlightened nations in the production
of them; and yet so numerous and insurmountable have been the
difficulties attending the attainment of this end, that after all, even
navigators, putting aside every other department of art and science,
have, until very recently, been scantily and imperfectly supplied with -> {'source': 'https://www.gutenberg.org/cache/epub/71292/pg71292.txt'}
====
In [7]:
filter = {
"where": {"jsonpath": "$[*] ? (@.source == 'https://www.gutenberg.org/files/48320/48320-0.txt')"},
}
docs = await vs.asearch(query, search_type="similarity", metadata=filter, k=3)
for d in docs:
print(d.page_content, " -> ", d.metadata, "\n====\n")possess all knowledge which is likely to be useful to him in his work,
and this I have endeavored in my case to do. If I remember rightly, you
on one occasion, in the early days of our friendship, defined my limits
in a very precise fashion.”
“Yes,” I answered, laughing. “It was a singular document. Philosophy,
astronomy, and politics were marked at zero, I remember. Botany
variable, geology profound as regards the mud-stains from any region -> {'source': 'https://www.gutenberg.org/files/48320/48320-0.txt'}
====
the light shining upon his strong-set aquiline features. So he sat as I
dropped off to sleep, and so he sat when a sudden ejaculation caused me
to wake up, and I found the summer sun shining into the apartment. The
pipe was still between his lips, the smoke still curled upward, and the
room was full of a dense tobacco haze, but nothing remained of the heap
of shag which I had seen upon the previous night.
“Awake, Watson?” he asked.
“Yes.”
“Game for a morning drive?” -> {'source': 'https://www.gutenberg.org/files/48320/48320-0.txt'}
====
“I glanced at the books upon the table, and in spite of my ignorance
of German I could see that two of them were treatises on science, the
others being volumes of poetry. Then I walked across to the window,
hoping that I might catch some glimpse of the country-side, but an oak
shutter, heavily barred, was folded across it. It was a wonderfully
silent house. There was an old clock ticking loudly somewhere in the
passage, but otherwise everything was deadly still. A vague feeling of -> {'source': 'https://www.gutenberg.org/files/48320/48320-0.txt'}
====