diff --git a/surfsense_backend/draw.py b/surfsense_backend/draw.py new file mode 100644 index 000000000..ec55f79a5 --- /dev/null +++ b/surfsense_backend/draw.py @@ -0,0 +1,5 @@ +from app.agents.researcher.graph import graph as researcher_graph +from app.agents.researcher.sub_section_writer.graph import graph as sub_section_writer_graph + +print(researcher_graph.get_graph().draw_mermaid()) +print(sub_section_writer_graph.get_graph().draw_mermaid()) \ No newline at end of file diff --git a/surfsense_web/content/docs/index.mdx b/surfsense_web/content/docs/index.mdx index e99f597dc..f3411b897 100644 --- a/surfsense_web/content/docs/index.mdx +++ b/surfsense_web/content/docs/index.mdx @@ -1,7 +1,99 @@ --- -title: Welcome Docs +title: Prerequisites +description: Required setup's before setting up SurfSense +full: true --- - -## Introduction - -I love Docs. \ No newline at end of file + +## PGVector installation Guide + +SurfSense requires the pgvector extension for PostgreSQL: + +### Linux and Mac + +Compile and install the extension (supports Postgres 13+) + +```sh +cd /tmp +git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git +cd pgvector +make +make install # may need sudo +``` + +See the [installation notes](https://github.com/pgvector/pgvector/tree/master#installation-notes---linux-and-mac) if you run into issues + +### Windows + +Ensure [C++ support in Visual Studio](https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170#download-and-install-the-tools) is installed, and run: + +```cmd +call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" +``` + +Note: The exact path will vary depending on your Visual Studio version and edition + +Then use `nmake` to build: + +```cmd +set "PGROOT=C:\Program Files\PostgreSQL\16" +cd %TEMP% +git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git +cd pgvector +nmake /F Makefile.win +nmake /F Makefile.win install +``` + +See the [installation notes](https://github.com/pgvector/pgvector/tree/master#installation-notes---windows) if you run into issues + +--- + +## Google OAuth Setup + +SurfSense user management and authentication works on Google OAuth. Lets set it up. + +1. Login to your [Google Developer Console](https://console.cloud.google.com/) +2. Enable People API. +![Google Developer Console People API](/docs/google_oauth_people_api.png) +3. Set up OAuth consent screen. +![Google Developer Console OAuth consent screen](/docs/google_oauth_screen.png) +4. Create OAuth client ID and secret. +![Google Developer Console OAuth client ID](/docs/google_oauth_client.png) +5. It should look like this. +![Google Developer Console Config](/docs/google_oauth_config.png) + +--- + +## File Upload's + +Files are converted to LLM friendly formats using [Unstructured](https://github.com/Unstructured-IO/unstructured) + +1. Get an Unstructured.io API key from [Unstructured Platform](https://platform.unstructured.io/) +2. You should be able to generate API keys once registered +![Unstructured Dashboard](/docs/unstructured.png) + +--- + +## LLM Observability (Optional) + +This is not required for SurfSense to work. But it is always a good idea to monitor LLM interactions. So we do not have those WTH moments. + +1. Get a LangSmith API key from [smith.langchain.com](https://smith.langchain.com/) +2. This helps in observing SurfSense Researcher Agent. +![LangSmith](/docs/langsmith.png) + +--- + +## Crawler + +SurfSense have 2 options for saving webpages: +- [SurfSense Extension](https://github.com/MODSetter/SurfSense/tree/main/surfsense_browser_extension) (Overall better experience & ability to save private webpages, recommended) +- Crawler (If you want to save public webpages) + +**NOTE:** SurfSense currently uses [Firecrawl.py](https://www.firecrawl.dev/) for web crawling. If you plan on using the crawler, you will need to create a Firecrawl account and get an API key. + + +--- + +## Next Steps + +Once you have all prerequisites in place, proceed to the [installation guide](/docs/installation) to set up SurfSense. \ No newline at end of file diff --git a/surfsense_web/content/docs/meta.json b/surfsense_web/content/docs/meta.json new file mode 100644 index 000000000..e5bb280a4 --- /dev/null +++ b/surfsense_web/content/docs/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Setup", + "description": "The setup guide for Surfsense", + "root": true, + "pages": [ + "---Setup---", + "index" + ] + } \ No newline at end of file diff --git a/surfsense_web/public/docs/google_oauth_client.png b/surfsense_web/public/docs/google_oauth_client.png new file mode 100644 index 000000000..f49650b5d Binary files /dev/null and b/surfsense_web/public/docs/google_oauth_client.png differ diff --git a/surfsense_web/public/docs/google_oauth_config.png b/surfsense_web/public/docs/google_oauth_config.png new file mode 100644 index 000000000..58b1216cd Binary files /dev/null and b/surfsense_web/public/docs/google_oauth_config.png differ diff --git a/surfsense_web/public/docs/google_oauth_people_api.png b/surfsense_web/public/docs/google_oauth_people_api.png new file mode 100644 index 000000000..070fda2ea Binary files /dev/null and b/surfsense_web/public/docs/google_oauth_people_api.png differ diff --git a/surfsense_web/public/docs/google_oauth_screen.png b/surfsense_web/public/docs/google_oauth_screen.png new file mode 100644 index 000000000..863a40b97 Binary files /dev/null and b/surfsense_web/public/docs/google_oauth_screen.png differ diff --git a/surfsense_web/public/docs/langsmith.png b/surfsense_web/public/docs/langsmith.png new file mode 100644 index 000000000..ccc7b43e6 Binary files /dev/null and b/surfsense_web/public/docs/langsmith.png differ diff --git a/surfsense_web/public/docs/unstructured.png b/surfsense_web/public/docs/unstructured.png new file mode 100644 index 000000000..861a847fe Binary files /dev/null and b/surfsense_web/public/docs/unstructured.png differ