Faits :
A.
Le 25 juillet 2018, X._, ressortissante jordanienne, a déposé plainte pénale contre inconnu pour traite d'êtres humains. En substance, elle a exposé avoir quitté la Jordanie en octobre 2017 afin de fuir son oncle qui n'acceptait pas son mariage et voulait qu'elle épouse un cousin. Elle avait pu s'enfuir et rejoindre la Grèce, où, contre 400 euros et son passeport, un certain A._ l'avait amenée à Genève, dans l'appartement d'un couple (jordano-irakien), dont l'épouse s'appelait B._. X._ était restée dans cet appartement, dont elle ne pouvait pas sortir puisque B._ fermait la porte à clé, du 5 ou 6 novembre au 19 décembre 2017. Elle y faisait le ménage et la cuisine. B._ se prostituait et l'avait incitée à en faire autant. Un jour, un Algérien ou un Marocain, à qui elle avait parlé la veille, était venu la chercher et l'avait conduite au centre pour réfugiés de Vallorbe.
B.
Par ordonnance du 23 août 2018, le ministère public genevois a refusé d'entrer en matière sur la plainte faute d'avoir pu identifier les auteurs, malgré une enquête de police.
C.
Par arrêt du 10 janvier 2019, la Chambre pénale de recours de la Cour de justice genevoise a rejeté le recours formé par X._ contre l'ordonnance de non-entrée en matière et a rejeté sa demande d'assistance judiciaire, la démarche étant d'emblée vouée à l'échec.
D.
X._ forme un recours en matière pénale auprès du Tribunal fédéral contre l'arrêt cantonal et conclut, avec suite de frais et dépens, à la transmission de la cause au ministère public pour instruction. Elle requiert, par ailleurs, l'octroi de l'assistance judiciaire.

Considérant en droit :
1.
1.1. Aux termes de l'art. 81 al. 1 let. a et b ch. 5 LTF, la partie plaignante qui a participé à la procédure de dernière instance cantonale est habilitée à recourir au Tribunal fédéral, si la décision attaquée peut avoir des effets sur le jugement de ses prétentions civiles. Constituent de telles prétentions celles qui sont fondées sur le droit civil et doivent en conséquence être déduites ordinairement devant les tribunaux civils. Il s'agit principalement des prétentions en réparation du dommage et du tort moral au sens des <ref-law>. Selon l'<ref-law>, il incombe au recourant d'alléguer les faits qu'il considère comme propres à fonder sa qualité pour recourir. Lorsque le recours est dirigé contre une décision de non-entrée en matière ou de classement de l'action pénale, la partie plaignante n'a pas nécessairement déjà pris des conclusions civiles. Quand bien même la partie plaignante aurait déjà déclaré des conclusions civiles (cf. <ref-law>), il n'en reste pas moins que le procureur qui refuse d'entrer en matière ou prononce un classement n'a pas à statuer sur l'aspect civil (cf. <ref-law>). Dans tous les cas, il incombe par conséquent à la partie plaignante d'expliquer dans son mémoire au Tribunal fédéral quelles prétentions civiles elle entend faire valoir contre l'intimé. Comme il n'appartient pas à la partie plaignante de se substituer au ministère public ou d'assouvir une soif de vengeance, la jurisprudence entend se montrer restrictive et stricte, de sorte que le Tribunal fédéral n'entre en matière que s'il ressort de façon suffisamment précise de la motivation du recours que les conditions précitées sont réalisées, à moins que l'on puisse le déduire directement et sans ambiguïté compte tenu notamment de la nature de l'infraction alléguée (<ref-ruling> consid. 1.1 p. 4 s.).
L'allocation d'une indemnité pour tort moral fondée sur l'<ref-law> suppose que l'atteinte présente une certaine gravité objective et qu'elle ait été ressentie par la victime, subjectivement, comme une souffrance morale suffisamment forte pour qu'il apparaisse légitime qu'une personne dans ces circonstances s'adresse au juge pour obtenir réparation (arrêts 6B_1244/2018 du 7 janvier 2019 consid. 1.1; 6B_1021/2018 du 19 décembre 2018 consid. 1.1; 6B_875/2018 du 15 novembre 2018 consid. 1 et les références citées).
1.2. En l'occurrence, la recourante prétend avoir un intérêt à l'annulation de la décision attaquée, en ce sens qu'elle pourra se constituer partie civile et demander un dédommagement aux auteurs des infractions dont elle a été victime. Elle n'avance toutefois aucune conclusion chiffrée, ne fait valoir aucun tort moral, ni ne tente de justifier un quelconque préjudice. Elle ne tente pas de démontrer l'existence de souffrances liées aux faits qu'elle dénonce. Par ailleurs, on ne saurait déduire de prétentions civiles directement et sans ambiguïté de l'infraction que la recourante a décrite dans sa plainte.
Faute de toute explication quant à l'existence de prétentions civiles, la qualité pour recourir de la recourante doit être exclue.
1.3. L'hypothèse visée à l'art. 81 al. 1 let. b ch. 6 LTF n'entre pas en considération, la recourante ne soulevant aucun grief quant à son droit de porter plainte.
1.4. Indépendamment des conditions posées par l'<ref-law>, la partie plaignante est habilitée à se plaindre d'une violation de ses droits de partie équivalant à un déni de justice formel, sans toutefois pouvoir faire valoir par ce biais, même indirectement, des moyens qui ne peuvent être séparés du fond (cf. <ref-ruling> consid. 1.1 p. 5 et les références citées).
En l'occurrence, la recourante reproche à la cour cantonale d'avoir refusé d'entrer en matière sur la plainte plutôt que suspendu la procédure (cf. <ref-law>). Or, faute pour la procédure d'avoir été ouverte par le ministère public, celle-ci ne peut être suspendue (cf. arrêt 1B_734/2012 du 7 mars 2013 consid. 2.4). Aussi, le grief doit être écarté. Cela n'empêche pas que, si le ministère public considère que les conditions de l'<ref-law> (appliqué par renvoi de l'<ref-law>) sont remplies, il pourra ordonner la reprise de la procédure préliminaire (sur cette question, cf. <ref-ruling>).
En tant que la recourante se contente d'affirmer que la cour cantonale " ne pouvait pas rejeter sa demande d'assistance judiciaire ", elle ne formule aucune critique satisfaisant aux exigences de motivation de l'art. 42 al. 2, respectivement de l'<ref-law>.
2.
Partant, le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). La recourante, qui succombe, supportera les frais judiciaires (<ref-law>), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge de la recourante.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale de recours.
Lausanne, le 19 mars 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Klinke