I am trying to build an agent/chatbot.
The human will be contacting the agent using a certain phraseology (very well specified).
I am new to this field, and I discovered that I can use Rule-based or machine learning. I have read that Rasa is not a rule based framework, but at the same time it uses Spacy.
Can somebody explain this to me.
You can configure Rasa to use SpaCy for e.g. entity extraction, so they're not mutually exclusive. If you want to build a virtual assistant (chatbot) then Rasa will provide you far more capabilities than raw SpaCy since it is intended to be a chatbot building framework, whereas SpaCy is a general NLP library.