CogneeRetriever
這將幫助您開始使用 Cognee 檢索器。如需所有 CogneeRetriever 功能和組態的詳細文件,請前往 API 參考。
整合詳細資訊
自備資料(即,索引和搜尋自訂文件語料庫)
檢索器 | 自行託管 | 雲端服務 | 套件 |
---|---|---|---|
CogneeRetriever | ✅ | ❌ | langchain-cognee |
設定
對於 cognee 預設設定,您只需要您的 OpenAI API 金鑰。
如果您想要從個別查詢取得自動追蹤,您也可以取消註解下方內容來設定您的 LangSmith API 金鑰
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
安裝
此檢索器位於 langchain-cognee
套件中
%pip install -qU langchain-cognee
import nest_asyncio
nest_asyncio.apply()
例項化
現在我們可以例項化我們的檢索器
from langchain_cognee import CogneeRetriever
retriever = CogneeRetriever(
llm_api_key="sk-", # OpenAI API Key
dataset_name="my_dataset",
k=3,
)
用法
新增一些文件、處理它們,然後執行查詢。Cognee 檢索與您的查詢相關的知識並產生最終答案。
# Example of adding and processing documents
from langchain_core.documents import Document
docs = [
Document(page_content="Elon Musk is the CEO of SpaceX."),
Document(page_content="SpaceX focuses on rockets and space travel."),
]
retriever.add_documents(docs)
retriever.process_data()
# Now let's query the retriever
query = "Tell me about Elon Musk"
results = retriever.invoke(query)
for idx, doc in enumerate(results, start=1):
print(f"Doc {idx}: {doc.page_content}")
API 參考:Document
在鏈中使用
與其他檢索器一樣,CogneeRetriever 可以透過 鏈 整合到 LLM 應用程式中。
我們將需要 LLM 或聊天模型
選擇聊天模型
pip install -qU "langchain[openai]"
import getpass
import os
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")
from langchain.chat_models import init_chat_model
llm = init_chat_model("gpt-4o-mini", model_provider="openai")
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
API 參考:ChatOpenAI
from langchain_cognee import CogneeRetriever
from langchain_core.documents import Document
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
# Instantiate the retriever with your Cognee config
retriever = CogneeRetriever(llm_api_key="sk-", dataset_name="my_dataset", k=3)
# Optionally, prune/reset the dataset for a clean slate
retriever.prune()
# Add some documents
docs = [
Document(page_content="Elon Musk is the CEO of SpaceX."),
Document(page_content="SpaceX focuses on space travel."),
]
retriever.add_documents(docs)
retriever.process_data()
prompt = ChatPromptTemplate.from_template(
"""Answer the question based only on the context provided.
Context: {context}
Question: {question}"""
)
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
answer = chain.invoke("What companies do Elon Musk own?")
print("\nFinal chain answer:\n", answer)
API 參考
TODO:新增 API 參考的連結。