Hi sir,
I have experience with many web application which are build with python,django,angularjs,google app engine technologies.
I can understood your requirements. Your main goal is to create "select2" type tool but with own customization.
I have knowledge of angularjs advance concept like Services,Directives,Custom Filter,Promise and then concepts,etc.
Using these experience i can easily built your search box.
Let me explain flow for your search box.
On page or conroller init time there will be one function which get list of tags,After fetching list of tags that tags should be stored at controller scope level so that it can be accessible in any function and their child scope html.
In input box after call on-Change one function which will check input box model's length is 3 or more then display one html dropdown type with ng-repeat which contains tags list.
After presssing space or enter we have make one http call and call pass selected tag parameter as function.
That selected tags should be visible in text box.
For better performance we can use "track by" if then also performance is down we can integrate reactJs with angularjs which will give you awesome performance.