Faits: A. Le 12 août 2009, A._ a été arrêté et placé en détention préventive dans le cadre d'une instruction ouverte contre lui pour injures (art. 177 CP) et menaces (art. 180 CP), sur plaintes de B._. Cette cause a été jointe à une autre instruction ouverte pour violence ou menace contre les autorités et les fonctionnaires (art. 285 CP) sur plainte de l'Office du Tuteur général du canton de Vaud. Le Juge d'instruction de l'arrondissement du Nord Vaudois en charge de l'enquête (ci-après: le juge d'instruction) a en outre inculpé l'intéressé d'infraction et de contravention à la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121). B. Le 15 mars 2010, le juge d'instruction a rejeté une demande de mise en liberté présentée par A._. Par ordonnance du 23 mars 2010, il l'a renvoyé devant le Tribunal correctionnel de la Broye et du Nord Vaudois sous les chefs d'accusation susmentionnés. Statuant sur recours du prénommé, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud (ci-après: le Tribunal d'accusation) a confirmé le refus de mise en liberté par arrêt du 30 mars 2010. Il estimait qu'il existait des présomptions du culpabilité suffisantes et que le maintien du recourant en détention était justifié par un risque de récidive. Il relevait à cet égard que l'inculpé avait déjà été condamné pénalement à cinq reprises, la dernière fois le 11 juin 2009 à une peine privative de liberté d'un an dont six mois avec sursis. Il se fondait en outre sur une expertise psychiatrique du 27 janvier 2010, qui concluait à l'existence d'un risque de récidive. C. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler cet arrêt et d'ordonner sa mise en liberté immédiate. Il conclut subsidiairement à sa mise en liberté moyennant des conditions à fixer par l'autorité, plus subsidiairement au renvoi de la cause à l'autorité précédente pour nouvelle décision au sens des considérants. Il requiert en outre l'assistance judiciaire. Le Tribunal d'accusation et le Procureur général du canton de Vaud renoncent à se déterminer et se réfèrent aux considérants de l'arrêt attaqué.