Code: Select all
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = MongoDBAtlasVectorSearch.from_connection_string(
connection_string = DB_CONNECTION,
namespace = "gpt.embeddings",
embedding = embeddings,
index_name = "vector_index",
relevance_score_fn="cosine"
)
loader = PyPDFLoader("./manual.pdf")
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=50, add_start_index=True)
all_splits = text_splitter.split_documents(docs)
document_ids = vector_store.add_documents(documents=all_splits)
Code: Select all
model = init_chat_model("openai:gpt-4.1")
retriever = vector_store.as_retriever(
searchtype="similarity_score_threshold",
search_kwargs={
"k": 3,
"score_threshold": -99999999999999999999999999999999999999999999999999999999,
}
)
@tool(response_format="content_and_artifact")
def retrieve_context(query: str):
"""Retrieve information to help answer a query."""
retrieved_docs = retriever.invoke(query)
print(retrieved_docs)
serialized = "\n\n".join([
(f"Source: {doc.metadata}\nContent: {doc.page_content}")
for doc in retrieved_docs
])
return serialized, retrieved_docs
tools = [retrieve_context]
prompt = """
Always use the `retrieve_context` tool first. Append the retrieved context to the user prompt and answer the user's question.
"""
agent = create_agent(model, tools, system_prompt=prompt)
Mobile version