"RingChat" is a portmanteau of "Ring" and "Chatbot". The "Ring" symbolizes the connection between the document contained within the URL link, the chatbot, and the user. In Korean, the first syllables of "Ring" and "link" are the same, allowing for a natural association. Additionally, "Ring" evokes the image of a ring, implying reliability in the answers provided by RingChat.
1️⃣ Recommend Links along with 3 metrics
- Score
- Times attached
- Total number of bookmark
2️⃣ Customized document analysis
3️⃣ Organize scattered answers
ringchat.mp4
This section provides an overview
of the project's core components.
Each tech stack
is accompanied by a discussion of its benefits
, drawbacks
, and the specific reasons
for its inclusion in this project.
Technology | Why We Chose It | Benefits | Drawbacks/Limitations |
---|---|---|---|
Docker | Consistency in the development environment and rapid deployment | Resolving library dependency issues that arise in different development environments. Easy scalability during deployment. |
Complexity of container image management. If not familiar with Docker, it can lead to potential delays in development time |
FastAPI | High development productivity because it supports automatic documentation and asynchronous processing when developing API. Easily fulfills the essential requirements for this project |
Asynchronous processing support Efficient use of resources Swagger support Easy data validation using Pydantic |
Requires learning about asynchronous programming. Community size is small compared to flask |
Langchain | This project aims to overcome the limitations of existing LLMs. Langchain, one of the most popular and intuitive frameworks that facilitates in-context learning, is a natural choice for achieving this goal. | It's easy to extend various functions with support for a wide range of tools. Development is relatively easy with an intuitive API. |
The high level of abstraction can make fine-grained control difficult. Since it's a relatively new framework, there might be challenges in acquiring information and a higher likelihood of encountering bugs |
Next.js | The only person on the team who handles frontend development is proficient in Next.js. | SSR, SSG support Improved search engine optimization Active community |
For pages where data changes frequently, SSR can cause performance degradation as the server needs to render the page every time it's requested. Understanding React is necessary, which can create a barrier to entry. |
Oracle 23ai | It supports Vector columns, enabling similarity search within the database. Similarity search was expected to be frequently used for URL recommendations in this project. | Direct AI model execution within the DB. AI Vector Search support. Enhanced security with SQL Firewall |
Relatively high licensing fees There is a barrier to entry as it is more difficult to handle than other DBs. Relatively little reference material |
OpenAI | The gpt-4o-mini model offers good performance at a relatively low credit cost. Once the charged credits are exhausted, no additional charges will occur. Code-related answers are superior compared to Gemini |
Answers are less likely to be truncated in the middle Decent performance for the cost |
The maximum token limit is lower compared to Gemini Multimodal processing capabilities are less developed compared to Gemini |
OCI free tier | Because it provides two free VMs, each with an AMD CPU and 1GB of RAM. | Two VM instance free forever No worries about additional charges |
The resources provided are inadequate for running actual services, therefore requiring an additional charge. |
Get Started
Clone
repo- Set
.env
&.env.local
files - Place the wallet folder
- Run the containers
Clone repo
git clone https://github.com/Rimember/ringchat.git # clone
Set .env & .env.local
# create .env file
cd ringchat/backend
echo "# API
OPENAI_API_KEY = \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"
# oracle
DB_USER = \"USER_NAME\"
DB_PWD = \"PASSWORD\"
DB_DSN = \"DATA_SOURCE_NAME\"
DB_CONFIG_DIR = \"WALLET_FOLDER_PATH\"
DB_WALLET_LOCATION = \"WALLET_FOLDER_PATH\"
DB_WALLET_PWD = \"WALLET_PASSWORD\"" > .env
# create .env.local file
cd ringchat/frontend
echo "NEXT_PUBLIC_API_URL=http://backend:8000/api/v0" > .env.local
Place the wallet folder
mv WALLET_FOLDER_PATH ringchat/backend
Run the containers
cd ringchat
docker compose up
API Document
Thanks goes to these wonderful people
강동훈 🛠️ |
선경은 🛠️ |
이찬호 🛠️ |
임승원 🛠️ |
정지혁 🛠️ |