Psychic
This notebook covers how to load documents fromPsychic
. Seehere for more details.
Prerequisites
- Follow the Quick Start section inthis document
- Log into thePsychic dashboard and get your secret key
- Install the frontend react library into your web app and have a user authenticate a connection. The connection will be created using the connection id that you specify.
Loading documents
Use thePsychicLoader
class to load in documents from a connection. Each connection has a connector id (corresponding to the SaaS app that was connected) and a connection id (which you passed in to the frontend library).
# Uncomment this to install psychicapi if you don't already have it installed
!poetry run pip-q install psychicapi langchain-chroma
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m A new release of pip is available: [0m[31;49m23.0.1[0m[39;49m -> [0m[32;49m23.1.2[0m
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m To update, run: [0m[32;49mpip install --upgrade pip[0m
from langchain_community.document_loadersimport PsychicLoader
from psychicapiimport ConnectorId
# Create a document loader for google drive. We can also load from other connectors by setting the connector_id to the appropriate value e.g. ConnectorId.notion.value
# This loader uses our test credentials
google_drive_loader= PsychicLoader(
api_key="7ddb61c1-8b6a-4d31-a58e-30d1c9ea480e",
connector_id=ConnectorId.gdrive.value,
connection_id="google-test",
)
documents= google_drive_loader.load()
API Reference:PsychicLoader
Converting the docs to embeddings
We can now convert these documents into embeddings and store them in a vector database like Chroma
from langchain.chainsimport RetrievalQAWithSourcesChain
from langchain_chromaimport Chroma
from langchain_openaiimport OpenAI, OpenAIEmbeddings
from langchain_text_splittersimport CharacterTextSplitter
text_splitter= CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts= text_splitter.split_documents(documents)
embeddings= OpenAIEmbeddings()
docsearch= Chroma.from_documents(texts, embeddings)
chain= RetrievalQAWithSourcesChain.from_chain_type(
OpenAI(temperature=0), chain_type="stuff", retriever=docsearch.as_retriever()
)
chain({"question":"what is psychic?"}, return_only_outputs=True)
Related
- Document loaderconceptual guide
- Document loaderhow-to guides