HomeMatch is a real estate matching system that leverages natural language processing (NLP) and vector databases to provide personalized home listings. The project utilizes OpenAI’s models alongside LangChain to process user preferences and match them with synthetic real estate listings. The system generates tailored home descriptions, ensuring that each recommendation aligns with the buyer’s specific needs.
The key concepts are shown in project.ipynd and a slightly more refined CLI application can be run using the HomeMatch.py file (see below for further instruction).
This project uses Conda for environment management and Makefile commands for easy setup. Follow the steps below to get started.
If you don’t have Conda installed, download and install Miniconda or Anaconda.
Check if Conda is installed:
conda --version
Run the following command to create a new Conda environment with Python:
make create_env
This will create a Conda environment named my_env
(or another name if modified in the Makefile) with Python installed.
Once created, activate the Conda environment:
conda activate my_env
Some packages, like tiktoken
, require Rust for installation. Run:
make install_rust
This will check if Rust is installed and install it if necessary.
Now, install all dependencies listed in requirements.txt
:
make install_reqs
This will:
- Ensure
pip
,setuptools
, andwheel
are up-to-date. - Install all dependencies from
requirements.txt
.
In order to use the enviroment we created with the make commands, while the env is active run
python -m ipykernel install --user --name=my_env --display-name "Python my_env"
then when you start up the notebook choose the Python my_env for the Kernal
With the proper environment activated with conda run
python HomeMatch.py
This will start the program and will prompt you with serveral questions such as:
- The path of your vector database.
- If you would like to generate new synthetic listings
From there you will be prompted with questions about what home you're in the market to buy and the application will then query over the synthetic data and return a personalized description of the property to you.