{"id":13632129,"url":"https://github.com/jjleng/sensei","last_synced_at":"2025-12-27T12:15:59.395Z","repository":{"id":244840393,"uuid":"816422413","full_name":"jjleng/sensei","owner":"jjleng","description":"Yet another open source Perplexity","archived":false,"fork":false,"pushed_at":"2024-07-22T17:59:50.000Z","size":1785,"stargazers_count":174,"open_issues_count":0,"forks_count":14,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-08-01T22:51:52.283Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.heysensei.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jjleng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-17T18:07:10.000Z","updated_at":"2024-08-01T01:39:53.000Z","dependencies_parsed_at":"2024-06-20T10:45:36.589Z","dependency_job_id":"c06528c1-f235-4865-87cd-a3b24bacd78d","html_url":"https://github.com/jjleng/sensei","commit_stats":null,"previous_names":["jjleng/sensei"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjleng%2Fsensei","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjleng%2Fsensei/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjleng%2Fsensei/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjleng%2Fsensei/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jjleng","download_url":"https://codeload.github.com/jjleng/sensei/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223772126,"owners_count":17199968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T22:02:52.856Z","updated_at":"2025-12-27T12:15:54.357Z","avatar_url":"https://github.com/jjleng.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","A01_文本生成_文本对话"],"sub_categories":["大语言对话模型及数据"],"readme":"# Sensei Search\n\nSensei Search is an AI-powered answer engine.\n\n## 📸 Screenshots\n\n\n### Light Mode\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/lennon.png\" alt=\"Screenshot - Lennon\" max-width=\"600\"\u003e\n\u003c/div\u003e\n\n### Dark Mode\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/programming.png\" alt=\"Screenshot - Programming\" max-width=\"600\"\u003e\n\u003c/div\u003e\n\n\n## 💡 Insights from Utilizing Open Source LLMs\n\nThe key takeaways and experiences of working with open source Large Language Models are summarized in a detailed discussion. For more information, you can read the full discussion on Reddit:\n\n- [Building an Open Source Perplexity AI with Open Source LLMs - Reddit Post](https://www.reddit.com/r/LocalLLaMA/comments/1dj7mkq/building_an_open_source_perplexity_ai_with_open/)\n\n## 🛠️ Tech Stack\nSensei Search is built using the following technologies:\n\n- Frontend: Next.js, Tailwind CSS\n- Backend: FastAPI, OpenAI client\n- LLMs: Command-R, Qwen-2-72b-instruct, WizardLM-2 8x22B, Claude Haiku, GPT-3.5-turbo\n- Search: SearxNG, Bing\n- Memory: Redis\n- Deployment: AWS, [Paka](https://github.com/jjleng/paka)\n\n## 🏃‍♂️ How to Run Sensei Search\n\nYou can run Sensei Search either locally on your machine or in the cloud.\n\n### Running Locally\n\nFollow these steps to run Sensei Search locally:\n\n1. Prepare the backend environment:\n    ```bash\n    cd sensei_root_folder/backend/\n    mv .env.development.example .env.development\n    ```\n    Edit `.env.development` as needed. The example environment assumes you run models through Ollama. Make sure you have reasonably good GPUs to run the command-r/Qwen-2-72b-instruct/WizardLM-2 8x22B model.\n\n2. No need to do anything for the frontend.\n\n3. Run the app with the following command:\n    ```bash\n    cd sensei_root_folder/\n    docker compose up\n    ```\n\n4. Open your browser and go to [http://localhost:3000](http://localhost:3000)\n\n### Running in the Cloud\n\nWe deploy the app to AWS using [paka](https://github.com/jjleng/paka). Please note that the models require GPU instances to run.\n\nBefore you start, make sure you have:\n\n- An AWS account\n- Requested GPU quota in your AWS account\n\nThe configuration for the cluster is located in the `cluster.yaml` file. You'll need to replace the `HF_TOKEN` value in `cluster.yaml` with your own Hugging Face token. This is necessary because the `mistral-7b` and `command-r` models require your account to have accepted their terms and conditions.\n\nFollow these steps to run Sensei Search in the cloud:\n\n1. Install paka:\n    ```bash\n    pip install paka\n    ```\n\n2. Provision the cluster in AWS:\n    ```bash\n    make provision-prod\n    ```\n\n3. Deploy the backend:\n    ```bash\n    make deploy-backend\n    ```\n\n4. Deploy the frontend:\n    ```bash\n    make deploy-frontend\n    ```\n\n5. Get the URL of the frontend:\n    ```bash\n    paka function list\n    ```\n\n6. Open the URL in your browser.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjleng%2Fsensei","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjjleng%2Fsensei","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjleng%2Fsensei/lists"}